我已经读过cljs.reader/read-string
将元数据附加到其创建的表单的位置,例如字符串中的位置。
这是真的吗?它在某处记录了吗?
感谢。
答案 0 :(得分:1)
read-string
不会向返回的表单添加元数据:
=> (meta (cljs.reader/read-string "(prn 0)"))
nil
您编译的函数/ defs / vars将具有此类型的元数据:
=> (meta #'my-fn)
{:ns app.core,
:name my-fn,
:file "src/cljs/app/core.cljs",
:end-column 20,
:column 1,
:line 125,
:end-line 125,
:arglists ([{:keys [x]}]),
:doc nil,
:test nil}
答案 1 :(得分:0)
我不知道 cljs.reader
,但如果您使用 clojure.tools.reader
,您可以这样做。它没有特别详细的记录,但您可以通过查看测试来了解如何:https://github.com/clojure/tools.reader/blob/master/src/test/cljs/cljs/tools/metadata_test.cljs#L62-L70
简而言之,您必须将字符串传递给 clojure.tools.reader.reader-types/indexing-push-back-reader
,然后从那里传递给 clojure.tools.reader/read
。 (在上面的测试/示例中,它们首先传递给 reader-types/string-push-back-reader
,但这似乎不是绝对必要的)。