Skip to content

Commit ea7d95f

Browse files
Merge pull request #7 from clj-codes/refact/library-to-namespace
Refact/library to namespace
2 parents 652a980 + 4e331cf commit ea7d95f

File tree

7 files changed

+119
-120
lines changed

7 files changed

+119
-120
lines changed

dev/playground.clj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@
6767
:definition/name
6868
:definition/group
6969
:definition/artifact
70-
:definition/namespace
71-
:definition/git-source]) ...]
70+
:definition/git-source
71+
{:definition/namespace [:namespace/name]}]) ...]
7272
:in $ ?q
7373
:where
7474
[(str ".*" ?q ".*") ?pattern]

src/codes/clj/docs/extractor/adapters.clj

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -68,38 +68,38 @@
6868
:project/manifest (:deps/manifest project))))
6969
analysis))
7070

71-
(defn analysis->libraries
71+
(defn analysis->namespaces
7272
[analysis]
7373
(reduce
74-
(fn [accum {:keys [project libraries]}]
74+
(fn [accum {:keys [project namespaces]}]
7575
(into accum
7676
(let [{:git/keys [url tag] :deps/keys [root]} project
7777
[group artifact] (-> project :project-name (str/split #"/"))]
78-
(->> libraries
78+
(->> namespaces
7979
group-multi-langs
8080
(mapv (fn [{:keys [end-row meta name-end-col name-end-row name-row added
8181
name author filename col name-col end-col doc row]}]
8282
(let [trim-filename (str/replace filename root "")]
8383
(assoc-some
84-
{:library/id (str/join "/" [group artifact name])
85-
:library/project {:project/id (:project-name project)}
86-
:library/group group
87-
:library/artifact artifact
88-
:library/name (str name)}
89-
:library/end-row end-row
90-
:library/meta meta
91-
:library/name-end-col name-end-col
92-
:library/name-end-row name-end-row
93-
:library/name-row name-row
94-
:library/added added
95-
:library/author author
96-
:library/filename trim-filename
97-
:library/git-source (str url "/blob/" tag trim-filename "#L" row)
98-
:library/col col
99-
:library/name-col name-col
100-
:library/end-col end-col
101-
:library/doc doc
102-
:library/row row))))))))
84+
{:namespace/id (str/join "/" [group artifact name])
85+
:namespace/project {:project/id (:project-name project)}
86+
:namespace/group group
87+
:namespace/artifact artifact
88+
:namespace/name (str name)}
89+
:namespace/end-row end-row
90+
:namespace/meta meta
91+
:namespace/name-end-col name-end-col
92+
:namespace/name-end-row name-end-row
93+
:namespace/name-row name-row
94+
:namespace/added added
95+
:namespace/author author
96+
:namespace/filename trim-filename
97+
:namespace/git-source (str url "/blob/" tag trim-filename "#L" row)
98+
:namespace/col col
99+
:namespace/name-col name-col
100+
:namespace/end-col end-col
101+
:namespace/doc doc
102+
:namespace/row row))))))))
103103
[]
104104
analysis))
105105

@@ -127,8 +127,8 @@
127127
:definition/artifact artifact
128128
:definition/name (str name)}
129129
:definition/defined-by (some-> defined-by str)
130-
:definition/namespace (some-> ns str)
131-
:definition/library (when ns {:library/id (str/join "/" [group artifact ns])})
130+
:definition/namespace (when ns {:namespace/id (str/join "/" [group artifact ns])
131+
:namespace/name (str ns)})
132132
:definition/fixed-arities fixed-arities
133133
:definition/arglist-strs arglist-strs
134134
:definition/end-row end-row
@@ -153,13 +153,13 @@
153153
[])
154154
(id-by (juxt :definition/group
155155
:definition/artifact
156-
:definition/namespace
156+
#(get-in % [:definition/namespace :namespace/name])
157157
:definition/name)
158158
:definition/id)
159159
(remove inrelevant-definitions)))
160160

161161
(defn analysis->datoms
162162
[analysis]
163163
(concat (analysis->projects analysis)
164-
(analysis->libraries analysis)
164+
(analysis->namespaces analysis)
165165
(analysis->definitions analysis)))

src/codes/clj/docs/extractor/analysis.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
(let [{:keys [paths] :as project-meta} (download-project! project git)
3030
{:keys [var-definitions namespace-definitions]} (kondo-run! paths)]
3131
{:project project-meta
32-
:libraries namespace-definitions
32+
:namespaces namespace-definitions
3333
:definitions var-definitions}))
3434

3535
(defn extract!

src/codes/clj/docs/extractor/datalevin.clj

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,28 +16,27 @@
1616
:project/sha {:db/valueType :db.type/string}
1717
:project/manifest {:db/valueType :db.type/keyword}})
1818

19-
(def library-schema
20-
{:library/id {:db/valueType :db.type/string
21-
:unique :db.unique/identity}
22-
:library/name {:db/valueType :db.type/string}
23-
:library/project {:db/valueType :db.type/ref}
24-
:library/group {:db/valueType :db.type/string}
25-
:library/artifact {:db/valueType :db.type/string}
26-
:library/doc {:db/valueType :db.type/string
27-
:db/fulltext true}
28-
:library/author {:db/valueType :db.type/string}
29-
:library/filename {:db/valueType :db.type/string}
30-
:library/git-source {:db/valueType :db.type/string}
31-
:library/added {:db/valueType :db.type/string}
32-
:library/row {:db/valueType :db.type/long}
33-
:library/col {:db/valueType :db.type/long}})
19+
(def namespace-schema
20+
{:namespace/id {:db/valueType :db.type/string
21+
:unique :db.unique/identity}
22+
:namespace/name {:db/valueType :db.type/string}
23+
:namespace/project {:db/valueType :db.type/ref}
24+
:namespace/group {:db/valueType :db.type/string}
25+
:namespace/artifact {:db/valueType :db.type/string}
26+
:namespace/doc {:db/valueType :db.type/string
27+
:db/fulltext true}
28+
:namespace/author {:db/valueType :db.type/string}
29+
:namespace/filename {:db/valueType :db.type/string}
30+
:namespace/git-source {:db/valueType :db.type/string}
31+
:namespace/added {:db/valueType :db.type/string}
32+
:namespace/row {:db/valueType :db.type/long}
33+
:namespace/col {:db/valueType :db.type/long}})
3434

3535
(def definition-schema
3636
{:definition/id {:db/valueType :db.type/string
3737
:unique :db.unique/identity}
3838
:definition/name {:db/valueType :db.type/string}
39-
:definition/namespace {:db/valueType :db.type/string}
40-
:definition/library {:db/valueType :db.type/ref}
39+
:definition/namespace {:db/valueType :db.type/ref}
4140
:definition/group {:db/valueType :db.type/string}
4241
:definition/artifact {:db/valueType :db.type/string}
4342
:definition/doc {:db/valueType :db.type/string
@@ -56,7 +55,7 @@
5655
:definition/protocol-name {:db/valueType :db.type/string}})
5756

5857
(def db-schemas
59-
(merge project-schema library-schema definition-schema))
58+
(merge project-schema namespace-schema definition-schema))
6059

6160
(defn bulk-transact! [datoms config]
6261
(let [conn (-> config :db :dir (d/get-conn db-schemas))]

test/codes/clj/docs/extractor/adapters_test.clj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
(is (match? fixtures.analysis/projects-adapted
1010
(adapters/analysis->projects fixtures.analysis/raw)))))
1111

12-
(deftest analysis->libraries-test
13-
(testing "analysis -> libraries"
14-
(is (match? fixtures.analysis/libraries-adapted
15-
(adapters/analysis->libraries fixtures.analysis/raw)))))
12+
(deftest analysis->namespaces-test
13+
(testing "analysis -> namespaces"
14+
(is (match? fixtures.analysis/namespaces-adapted
15+
(adapters/analysis->namespaces fixtures.analysis/raw)))))
1616

1717
(deftest analysis->definitions-test
1818
(testing "analysis -> definitions"

test/codes/clj/docs/extractor/datalevin_test.clj

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -43,41 +43,41 @@
4343
"org.clojure/clojure")
4444
ffirst)))
4545

46-
(is (match? {:library/project {:db/id 1
47-
:project/manifest :pom
48-
:project/tag "clojure-1.11.1"
49-
:project/sha "ce55092f2b2f5481d25cff6205470c1335760ef6"
50-
:project/url "https://github.com/clojure/clojure"
51-
:project/artifact "clojure"
52-
:project/paths ["/src/clj"
53-
"/src/main/clojure"
54-
"/src/main/java"
55-
"/src/resources"]
56-
:project/name "org.clojure/clojure"
57-
:project/group "org.clojure"
58-
:project/id "org.clojure/clojure"}
46+
(is (match? {:namespace/project {:db/id 1
47+
:project/manifest :pom
48+
:project/tag "clojure-1.11.1"
49+
:project/sha "ce55092f2b2f5481d25cff6205470c1335760ef6"
50+
:project/url "https://github.com/clojure/clojure"
51+
:project/artifact "clojure"
52+
:project/paths ["/src/clj"
53+
"/src/main/clojure"
54+
"/src/main/java"
55+
"/src/resources"]
56+
:project/name "org.clojure/clojure"
57+
:project/group "org.clojure"
58+
:project/id "org.clojure/clojure"}
5959
:db/id 2
60-
:library/artifact "clojure"
61-
:library/name-end-col 19
62-
:library/added "1.2"
63-
:library/end-col 40
64-
:library/end-row 39
65-
:library/git-source "https://github.com/clojure/clojure/blob/clojure-1.11.1/src/clj/clojure/pprint.clj#L14"
66-
:library/name-row 37
67-
:library/meta {}
68-
:library/row 14
69-
:library/name-col 5
70-
:library/author "Tom Faulhaber"
71-
:library/col 1
72-
:library/name "clojure.pprint"
73-
:library/doc "A Pretty Printer for Clojure\n\nclojure.pprint implements a flexible system for printing structured data\nin a pleasing easy-to-understand format. Basic use of the pretty printer is \nsimple just call pprint instead of println. More advanced users can use \nthe building blocks provided to create custom output formats. \n\nOut of the box pprint supports a simple structured format for basic data \nand a specialized format for Clojure source code. More advanced formats \nincluding formats that don't look like Clojure data at all like XML and \nJSON can be rendered by creating custom dispatch functions. \n\nIn addition to the pprint function this module contains cl-format a text \nformatting function which is fully compatible with the format function in \nCommon Lisp. Because pretty printing directives are directly integrated with\ncl-format it supports very concise custom dispatch. It also provides\na more powerful alternative to Clojure's standard format function.\n\nSee documentation for pprint and cl-format for more information or \ncomplete documentation on the Clojure web site on GitHub."
74-
:library/id "org.clojure/clojure/clojure.pprint"
75-
:library/name-end-row 37
76-
:library/filename "/src/clj/clojure/pprint.clj"
77-
:library/group "org.clojure"}
78-
(-> (d/q '[:find (pull ?e [* {:library/project [*]}])
60+
:namespace/artifact "clojure"
61+
:namespace/name-end-col 19
62+
:namespace/added "1.2"
63+
:namespace/end-col 40
64+
:namespace/end-row 39
65+
:namespace/git-source "https://github.com/clojure/clojure/blob/clojure-1.11.1/src/clj/clojure/pprint.clj#L14"
66+
:namespace/name-row 37
67+
:namespace/meta {}
68+
:namespace/row 14
69+
:namespace/name-col 5
70+
:namespace/author "Tom Faulhaber"
71+
:namespace/col 1
72+
:namespace/name "clojure.pprint"
73+
:namespace/doc "A Pretty Printer for Clojure\n\nclojure.pprint implements a flexible system for printing structured data\nin a pleasing easy-to-understand format. Basic use of the pretty printer is \nsimple just call pprint instead of println. More advanced users can use \nthe building blocks provided to create custom output formats. \n\nOut of the box pprint supports a simple structured format for basic data \nand a specialized format for Clojure source code. More advanced formats \nincluding formats that don't look like Clojure data at all like XML and \nJSON can be rendered by creating custom dispatch functions. \n\nIn addition to the pprint function this module contains cl-format a text \nformatting function which is fully compatible with the format function in \nCommon Lisp. Because pretty printing directives are directly integrated with\ncl-format it supports very concise custom dispatch. It also provides\na more powerful alternative to Clojure's standard format function.\n\nSee documentation for pprint and cl-format for more information or \ncomplete documentation on the Clojure web site on GitHub."
74+
:namespace/id "org.clojure/clojure/clojure.pprint"
75+
:namespace/name-end-row 37
76+
:namespace/filename "/src/clj/clojure/pprint.clj"
77+
:namespace/group "org.clojure"}
78+
(-> (d/q '[:find (pull ?e [* {:namespace/project [*]}])
7979
:in $ ?q
80-
:where [?e :library/name ?q]]
80+
:where [?e :namespace/name ?q]]
8181
db
8282
"clojure.pprint")
8383
ffirst)))

0 commit comments

Comments
 (0)