Skip to content
Open
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
f98fa61
Add fix-BOM functions
shmuelko Jul 8, 2020
e63d7e0
fix
shmuelko Jul 8, 2020
bfa25e4
fix
shmuelko Jul 8, 2020
bc20104
remove instead of fix
shmuelko Jul 8, 2020
38dfcd4
get full data
shmuelko Jul 8, 2020
57319f8
get by bytes
shmuelko Jul 8, 2020
7a6f4e0
bytes
shmuelko Jul 8, 2020
c58a33c
byte
shmuelko Jul 8, 2020
eebae93
byte
shmuelko Jul 8, 2020
c2b0867
byte
shmuelko Jul 8, 2020
10e13c8
byte
shmuelko Jul 8, 2020
93c45d9
byte
shmuelko Jul 8, 2020
2a08ebd
byte
shmuelko Jul 8, 2020
53e0972
byte
shmuelko Jul 8, 2020
a5ed08f
byte
shmuelko Jul 8, 2020
ec206ae
byte
shmuelko Jul 8, 2020
048bee9
bytes
shmuelko Jul 8, 2020
329b762
pprint
shmuelko Jul 8, 2020
b53cede
slurp-bytes
shmuelko Jul 8, 2020
9350488
close function
shmuelko Jul 8, 2020
9907945
slurp files
shmuelko Jul 8, 2020
3dd8a02
into char
shmuelko Jul 8, 2020
1f39186
first char
shmuelko Jul 8, 2020
91685e5
all results
shmuelko Jul 8, 2020
f527d21
file->bytes
shmuelko Jul 8, 2020
15112e4
files
shmuelko Jul 8, 2020
af0272d
debomify
shmuelko Jul 8, 2020
1dcc7e9
without spliting
shmuelko Jul 8, 2020
dabb2da
debomify
shmuelko Jul 8, 2020
e2dd3f3
debomify
shmuelko Jul 8, 2020
48aa5e5
display-files
shmuelko Jul 8, 2020
3af3abb
save domless files
shmuelko Jul 8, 2020
017e6ce
domless fix
shmuelko Jul 8, 2020
6e74e05
clean code
shmuelko Jul 8, 2020
e96584d
with clj-bom
shmuelko Jul 9, 2020
dfe8db0
print is bom
shmuelko Jul 9, 2020
d7b62d9
printline
shmuelko Jul 9, 2020
9247b46
ppint
shmuelko Jul 9, 2020
28f873a
doall
shmuelko Jul 12, 2020
dcc630b
doall
shmuelko Jul 12, 2020
e223516
remove prints
shmuelko Jul 12, 2020
016435a
save bomless files into tmp folder
shmuelko Jul 12, 2020
9c05fb7
add new files to tmp
shmuelko Jul 12, 2020
006eed3
join folder path
shmuelko Jul 12, 2020
19fb7a0
fix
shmuelko Jul 12, 2020
bb0dd61
make tmp dir
shmuelko Jul 12, 2020
9466af3
run over all folders
shmuelko Jul 12, 2020
6e27073
get file
shmuelko Jul 12, 2020
4cbf6e3
directory
shmuelko Jul 12, 2020
02918d3
debug prints
shmuelko Jul 12, 2020
9a0ae9b
clean debugs prints
shmuelko Jul 12, 2020
3d87bca
remove previus tmp folde
shmuelko Jul 12, 2020
aa06cbb
create tmp only if exsist
shmuelko Jul 12, 2020
b284929
exists?
shmuelko Jul 12, 2020
522f45c
debug check why stil create fodler tmp
shmuelko Jul 12, 2020
7f7ef50
more debug, I see too many files included after filter
shmuelko Jul 12, 2020
6f70e42
only this folder and not sup folders
shmuelko Jul 12, 2020
fe6e734
not contains
shmuelko Jul 12, 2020
bdfc3fe
filters
shmuelko Jul 12, 2020
7930074
includes
shmuelko Jul 12, 2020
2bf49aa
clean code
shmuelko Jul 12, 2020
468148d
clean debugs
shmuelko Jul 12, 2020
1fd1ce8
lazy seq unlazy
shmuelko Jul 12, 2020
f19453f
unlazy
shmuelko Jul 12, 2020
d3d0b19
send-dir
shmuelko Jul 12, 2020
1ba156b
change seperator depends on the system
shmuelko Jul 13, 2020
74a97b0
io/files
shmuelko Jul 13, 2020
e87a416
parent
shmuelko Jul 13, 2020
b0e0dc5
tmp as parent
shmuelko Jul 13, 2020
75e548d
prints
shmuelko Jul 13, 2020
23f06ab
print in remove-bom
shmuelko Jul 13, 2020
7f71cbb
includes
shmuelko Jul 13, 2020
fc56591
remove print
shmuelko Jul 13, 2020
6b5ad41
remove print
shmuelko Jul 13, 2020
c4dbefb
create inner folder is not exist
shmuelko Jul 14, 2020
ed0c17b
add delete-recursively
shmuelko Jul 14, 2020
19da6ff
shorten clojure.java.io
shmuelko Jul 14, 2020
25b422a
delete-recursively!
shmuelko Jul 14, 2020
6e44d67
merge results for several folders
shmuelko Jul 15, 2020
e2c72b0
use tmp param to set tmp folder
shmuelko Sep 16, 2020
342e448
always use UTF-8 when parsing XML
stask Feb 2, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 71 additions & 9 deletions src/test_xml_parser/core.clj
Original file line number Diff line number Diff line change
@@ -1,14 +1,23 @@
(ns test-xml-parser.core
(:require
[clojure.xml :as xml]
[clojure.zip :as zip]
[clojure.pprint :as pprint]
[clojure.string :as str])
[clojure.xml :as xml]
[clojure.zip :as zip]
[clojure.pprint :as pprint]
[clojure.string :as str]
[clojure.java.io :as io]
)
(:import [java.io File]))

(defn delete-recursively! [fname]
(let [f (io/file fname)]
(when (.isDirectory f)
(doseq [child-path (.listFiles f)]
(delete-recursively! child-path)))
(io/delete-file f)))

(defn zip-str [s]
(zip/xml-zip
(xml/parse (java.io.ByteArrayInputStream. (.getBytes s)))))
(xml/parse (java.io.ByteArrayInputStream. (.getBytes s "UTF-8")))))

(defn filter-tags [xml-content tag-key]
(let [filter-result (filter #(= (:tag %) tag-key) xml-content)]
Expand All @@ -20,6 +29,31 @@
(map (fn [[k vals]] [k (first (map :attrs vals))]))
(into {})))

(defn debomify
[^String line]
(let [bom "\uFEFF"]
(if (.startsWith line bom)
(.substring line 1)
line)))

(defn create-container-folders [directory-parent directory-name tmp]
(when
(not (.exists (io/file directory-parent tmp)))
(.mkdir (io/file directory-parent tmp)))
(when (not (.exists (io/file directory-parent tmp directory-name)))
(.mkdir (io/file directory-parent tmp directory-name))))

(defn file-bom [path tmp]
(let [bomless-file (debomify (slurp path))
directory (.getParent (io/file path))
directory-name (.getName (io/file directory))
directory-parent (.getParent (io/file directory))
filename (.getName (io/file path))
new-file (io/file directory-parent tmp directory-name filename)
new-path (.getAbsolutePath new-file)]
(create-container-folders directory-parent directory-name tmp)
(spit new-path bomless-file)))

(defn get-data [arg]
(let [zip-val (zip-str arg)]
(if (= (:tag (first zip-val)) :testsuites)
Expand All @@ -40,14 +74,42 @@
(let [merge-content (merge (get grouped-files-map (:name parsed-content)) parsed-content)]
merge-content))

(defn send-directory [directory parsed-content]
(let [filtered-files (filter (fn [file] (str/ends-with? (.getAbsolutePath file) ".xml")) (file-seq directory))
filtered-paths (for [file filtered-files] (.getAbsolutePath file))
(defn get-files-path [directory]
(let [file-seqs (.listFiles (io/file directory))
filtered-files (filter (fn [file] (str/ends-with? (.getAbsolutePath file) ".xml")) file-seqs)
filtered-paths (for [file filtered-files] (.getAbsolutePath file))]
filtered-paths))

(defn merge-results [directory parsed-content]
(let [filtered-paths (get-files-path directory)
files (for [path filtered-paths] (slurp path))
[grouped-data] (get-files-data files)
[grouped-data] (get-files-data files)
result (for [parsed parsed-content] (parse-n-merge-data grouped-data parsed))]
result))

(defn send-directory [directory parsed-content]
(let [report-result (list )
result (first
(conj report-result
(first
(for [dir directory]
(merge-results dir parsed-content)))))]
result))

(defn remove-bom [directory tmp]
(let [filtered-paths (get-files-path directory)]
(doseq [path filtered-paths]
(file-bom path tmp))))

(defn return-file [file]
(pprint/pprint (slurp file)))

(defn return-files [directory]
(let [filtered-files (filter (fn [file] (str/ends-with? (.getAbsolutePath file) ".xml")) (file-seq directory))
filtered-paths (for [file filtered-files] (.getAbsolutePath file))
files (for [path filtered-paths] (return-file path))]
files))

Comment on lines +104 to +112
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's this for?

(defn get-dir-by-path [path]
(let [directory (clojure.java.io/file path)]
(send-directory directory '("" "" ""))))
Expand Down