似乎有一些API,因为有一个旧的客户端-https://github.com/dakrone/clojuredocs-client/blob/master/src/cd_client/core.clj不确定是否仍然有效,但我认为可能是如果我们决定支持它,创建一个用于处理ClojureDocs的中间件的好主意。 这也将使我们能够在文档等中显示示例。
我认为没有API,但可以在以下位置找到档案: https :
谢谢@ cursive-ide! 我想知道你是怎么做到的。 您的实现非常流畅且方便。
在对API的现有请求中添加了注释,以查看为该数据提供/需要什么样的权限。 似乎它的大小约为3mb,所以也许可以将其放入edn文件中,并与果园或cider-nrepl一起分发?
@dpsutton我同意。 这就是我们在Orchard中为see-also.edn
所做的工作-这只是我们不时更新的clojuredocs的导出。 我们只需要添加几个lein / make任务即可简化这些出口。
另请参阅https://github.com/clojure-emacs/orchard/issues/60 ,该链接链接到我们过去如何从ClojureDocs中提取see-also.edn
。
/ me悲伤地挥手
@bbatsov我正在测试在vim-iced中使用clojuredocs-export.json。
https://github.com/liquidz/iced-nrepl/blob/feature/clojuredocs/src/iced/nrepl/document.clj
在我的实现中,我尝试接收json-path
并缓存JSON数据,因为与see-also.edn
不同,它似乎经常更改。
我可以将此代码贡献给果园或cider-nrepl。 您如何看待这种实施方式?
@liquidz该实现对我而言似乎很合理,这一点令人失望,因为没有EDN导出,现在我们需要第三方dep来解析JSON。 这意味着我们必须在cider-nrepl
而不是orchard
,因为理想情况下,Orchard应该保持空闲状态(即Clojure / ClojureScript之外)。
无论如何,我想这已经足够了。 感谢您提供帮助!
@bbatsov谢谢!
我正在确认有关EDN格式导出到clojuredocs的信息。
如果没有计划将数据导出为EDN格式,我将创建PR到cider-nrepl
存储库。
大!
如果没有计划将数据导出为EDN格式,我将创建PR到cider-nrepl存储库。
顺便说一句,我一直在想我们也可以自己实现,因为我们所需要的只是将一些琐碎的Web服务部署到Heroku(或其他任何东西)上,它每天都会提取json导出并将其转换为EDN。 不过,我希望@zk能够帮助我们直接从源头导出一些EDN。
@bbatsov
顺便说一句,我一直在想我们也可以自己实现,因为我们所需要的只是将一些琐碎的Web服务部署到Heroku(或其他任何东西)上,它每天都会提取json导出并将其转换为EDN。
如何使用Netlify?
我做了一个简单的项目作为测试,每天将转换后的EDN文件发送到Netlify。
@liquidz太棒了! 那正是我的初衷。
现在,您可以直接将功能添加到Orchard,而cider-nrepl将仅具有一个思想包装器。
@liquidz我终于开始研究这个问题,我注意到可以对导出进行一些调整以便更加方便-它保留了每个人所做的所有编辑的记录,我想我们只需要丢弃此信息并放入:see-alsos
东西即可:notes
和:examples
作为与向量关联的每个符号的顶级关键字。 我们可以保留导出的原始数据,并让果园对数据进行处理,但是在我看来,我们可以直接清理导出的内容(这也将使其下载得更小)。
@bbatsov我不确定您期望什么结构。
你能告诉我具体的例子吗?
@liquidz当然!
例如,在这里,我将删除有关如何创建/编辑内容的所有作者信息:
:vars [{:ns "clojure.core", :name "def", :type "var", :see-alsos [{:created-at 1289040035000, :author {:login "boxie", :account-source "clojuredocs", :avatar-url "https://www.gravatar.com/avatar/bfc366066e3c1beee98f3a6666728169?r=PG&default=identicon"}, :to-var {:ns "clojure.core", :name "defn", :library-url "https://github.com/clojure/clojure"}, :_id "542692eaf6e94c6970521b15"} {:created-at 1289040039000, :author {:login "boxie", :account-source "clojuredocs", :avatar-url "https://www.gravatar.com/avatar/bfc366066e3c1beee98f3a6666728169?r=PG&default=identicon"}, :to-var {:ns "clojure.core", :name "fn", :library-url "https://github.com/clojure/clojure"}, :_id "542692eaf6e94c6970521b16"} {:created-at 1289040051000, :author {:login "boxie", :account-source "clojuredocs", :avatar-url "https://www.gravatar.com/avatar/bfc366066e3c1beee98f3a6666728169?r=PG&default=identicon"},
此类数据对ClojureDocs本身很重要,但是当您只想在编辑器中显示某些数据时并不重要。 就像我说的那样-在Orchard中调整数据处理对我来说不是什么大不了的事,但是我有理由相信我们永远不会需要这种类型的数据,因此使导出更加紧凑可能更好。 基本上这样是理想的:
{:var {:ns ... :name ... :type ... :see-alsos [just a list of vars] :notes [just a list of notes] :examples just a list of examples}
这个名字有意义吗?
@bbatsov谢谢!
对我来说也很好。
我将尝试将示例数据放入https://clojuredocs-edn.netlify.com/
@bbatsov我在这里部署了精简版。
https://clojuredocs-edn.netlify.com/export.compact.edn
这个样本数据怎么样?
@liquidz太棒了! 那正是我的初衷! 我猜我们可以更新orchard / cider-nrepl来使用此数据。
@bbatsov我开始理解cider-clojuredocs
的代码,并且我注意到从果园/苹果酒-nrepl获得的数据有所帮助。
查找符号def
时的dict输出:
(dict "status" ("done") "doc" "Creates and interns a global var with the name
of symbol in the current namespace (*ns*) or locates such a var if
it already exists. If init is supplied, it is evaluated, and the
root binding of the var is set to the resulting value. If init is
not supplied, the root binding of the var is unaffected." "forms-str" "(def symbol doc-string? init?)" "id" "56" "name" "def" "see-also" ("clojure.core/defn" "clojure.core/fn" "clojure.core/defmacro" "clojure.core/defmulti" "clojure.core/defonce" "clojure.core/ns-unmap") "session" "e7babf3b-fe95-49dc-999d-8565bbf9ab72" "special-form" "true" "url" "https://clojure.org/special_forms#def")
它缺少代码中期望的ns
键,以便通过browse-url
发出请求。 我认为针对这种情况的解决方案从此数据的来源出发会更好。 您能指出一些进一步调试的方向吗?
我认为由于某种原因,这根本不是ClojureDocs导出的一部分,这似乎有些怪异,但是对从中得到的结果进行微调并不困难。
@wandersoncferreira @bbatsov
“特殊形式”“真实”
ClojureDocs导出数据似乎没有特殊格式的ns
键。
https://clojure.org/reference/special_forms
好吧,我想我们可以认为缺少ns
就是clojure.core
。 或在导出器服务中稍微调整数据。
这个假设足够好,但是我认为调整数据导出器以包含clojure.core
命名空间并将cider-clojuredocs
上的当前实现保持不变将是很好的。
@wandersoncferreira @bbatsov
哦,我误会了! 抱歉!
是info
op不会返回特殊格式的ns
键。
这是查找符号def时的dict输出:
我想这是info
op的回应。
因此,我们应该调整info
op或将缺少ns
视为clojure.core
。
是的,我们应该。
我可以在星期四工作。 我们赞助在巴西举行的南方Clojure活动,我非常忙于组织我们将带给活动的所有内容。 希望看到你在@bbatsov
@wandersoncferreira同样!
@liquidz关于导出的一个小注意事项-如果您漂亮地打印了导出edns,那将是非常不错的,因此人为操作它们会更容易一些。 更不用说Emacs处理非常差的超长线了。 :D
@bbatsov好! 我修复了导出EDN文件。
https://clojuredocs-edn.netlify.com/export.compact.edn
这里没有印刷精美的版本。
大! 谢谢! 🙇
最有用的评论
@bbatsov好! 我修复了导出EDN文件。
https://clojuredocs-edn.netlify.com/export.compact.edn
这里没有印刷精美的版本。