Skip to content

Commit 89164a4

Browse files
committed
Fixes #163
1 parent cb6cb96 commit 89164a4

File tree

1 file changed

+34
-24
lines changed

1 file changed

+34
-24
lines changed

Diff for: src/libpython_clj2/codegen.clj

+34-24
Original file line numberDiff line numberDiff line change
@@ -66,20 +66,37 @@
6666

6767

6868
(defn- output-module-generic
69-
[^Writer writer clj-name k v]
70-
(.write writer
71-
(format "
69+
[^Writer writer clj-name k v vv]
70+
(if (or (number? vv)
71+
(string? vv)
72+
(nil? vv))
73+
(.write writer
74+
(format "
75+
76+
(def ^{:doc \"%s\"} %s %s)"
77+
(get-docs v)
78+
clj-name
79+
(if (string? vv)
80+
(format "\"%s\"" vv)
81+
vv)))
82+
(.write writer
83+
(format "
7284
7385
(def ^{:doc \"%s\"} %s (as-jvm/generic-pyobject (py-global-delay (py/get-attr @src-obj* \"%s\"))))"
74-
(get-docs v)
75-
clj-name
76-
k)))
86+
(get-docs v)
87+
clj-name
88+
k))))
7789

7890

7991
(def ^:no-doc default-exclude
8092
'[+ - * / float double int long mod byte test char short take partition require
8193
max min identity empty mod repeat str load cast type sort conj
82-
map range list next hash eval bytes filter compile print set format])
94+
map range list next hash eval bytes filter compile print set format
95+
compare reduce merge])
96+
97+
98+
(def ^:private invalid-symbol-names
99+
#{"__cached__" "__file__"})
83100

84101

85102
(defn write-namespace!
@@ -164,26 +181,19 @@ user> (doto (python/list)
164181
py-mod-or-cls))
165182
(doseq [[k v] target-metadata]
166183
(when (and (string? k)
184+
(not= "__cached__" k)
185+
(not= 0 (count k))
167186
(map? v)
168187
(py/has-attr? target k))
169188
(let [clj-name (get symbol-name-remaps k k)]
170-
;;If the value is atomic
171-
(if (or (string? v)
172-
(number? v)
173-
(boolean? v))
174-
(.write writer (format "\n\n(def ^{:doc %s} %s %s)"
175-
(escape-quotes (:doc v "No documentation"))
176-
clj-name
177-
(if (string? v)
178-
(str "\"" (escape-quotes v) "\"")
179-
v)))
180-
(case (:type v)
181-
:list (output-module-list writer clj-name k v)
182-
:tuple (output-module-tuple writer clj-name k v)
183-
:dict (output-module-dict writer clj-name k v)
184-
(if (:callable? (:flags v))
185-
(output-module-callable writer clj-name k v)
186-
(output-module-generic writer clj-name k v))))))))
189+
(case (:type v)
190+
:list (output-module-list writer clj-name k v)
191+
:tuple (output-module-tuple writer clj-name k v)
192+
:dict (output-module-dict writer clj-name k v)
193+
(if (:callable? (:flags v))
194+
(output-module-callable writer clj-name k v)
195+
(output-module-generic writer clj-name k v
196+
(py/get-attr target k))))))))
187197
:ok))))
188198
([py-mod-or-cls]
189199
(write-namespace! py-mod-or-cls nil)))

0 commit comments

Comments
 (0)