-
Notifications
You must be signed in to change notification settings - Fork 0
/
core.clj
58 lines (48 loc) · 1.71 KB
/
core.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
(ns words.core
(:import [java.nio.file FileSystems Path StandardWatchEventKinds]
[watcher Watcher]))
(defn strip [^String text ^String pattern]
(.replaceAll text pattern ""))
(defn remove-line-breaks [^String text]
(strip text "\n"))
(defn remove-spaces [^String text]
(-> text
(strip " ")
(strip ",")
(strip "\\.")))
(defn remove-tags [^String text]
(-> text
(strip "<title>.*</title>")
(strip "<head>.*</head>")
(strip "<!.*>")
(strip "<\\w*>")
(strip "</\\w*>")
(strip "<.*>")))
(defn count-characters [^String text]
(let [stripped (-> text
remove-tags
remove-spaces
remove-line-breaks)]
; (println stripped)
(count stripped)))
(defn do-count [filename]
(let [text (slurp filename)
total-size (count text)
stripped-size (count-characters text)]
(println (str "Tamanho total: " total-size " bytes"))
(println (str "Tamanho real : " stripped-size " bytes"))
(println (str "Progresso : " (format "%,.1f" (* (/ stripped-size 20000.0) 100)) "%"))))
(def watcher (. (FileSystems/getDefault) newWatchService))
(defn get-path [^String filename]
(let [fs (FileSystems/getDefault)]
(. fs getPath "." (into-array [filename]))))
(defn watch-file-change [filename what]
(let [path (get-path filename)
key (. path register watcher (into-array [StandardWatchEventKinds/ENTRY_MODIFY]))]
(println key)))
(defn -main [& args]
(if (seq? args)
(let [filename (first args)]
(do-count (first args)))
(println "Informe o nome do arquivo HTML"))
(println))