问题标签 [enlive]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clojure - 如何改进这个 Enlive 模板?
我使用这个 Enlive 模板将它下面的 HTML 转换为下面的 HTML。基于一组 twitter 名称,我生成了一个带有链接的表。我怎样才能摆脱里面的打嗝enlive/clone-for
?
HTML 输入
HTML 输出
clojure - 如何在 enlive 中使用片段?
我是一名 Rails 开发人员,在 Clojure 中涉足。我正在尝试用 ERB 做一些非常简单的事情,但我一生都无法在 enlive 中弄清楚。
假设我在 layout.html 中有一个网站的简单布局文件:
我有这些片段,例如 header.html 和 footer.html 以及这条简单的路线。
每当请求转到“/”时,我怎样才能做到这一点,它会转换布局并将页眉和页脚片段插入其中?
clojure - Clojure Enlive:如何简化从 scrape3.clj 提取的 fn
我遵循了 enlive 教程,必须说我对 Enlive 解析网络的能力印象深刻。现在,我进一步查看了此处可用的 scrape3.clj:https ://github.com/swannodette/enlive-tutorial/blob/master/src/tutorial/scrape3.clj
Swannodette 在设计这个例子方面做得很好,但我觉得我们可以让它变得更枯燥一些。
我的问题:我会重写此提取函数以使其更干燥:
如果您对程序的其他元素有其他想法,请随时分享!
编辑:我到处玩,想出了:
clojure - 使用 enlive,您如何根据其内容获取链接的标签?
我有一些看起来像这样的html:
如何a
通过使用显示“查找包含文本内容的任何链接”的选择器来获得?我已经了解了text-pred
,但这只是返回文本,而不是带有文本的标签。
clojure - 如何编写 Enlive 选择器以返回标签的“集群”?
我正在使用 Enlive 编写一些 Clojure 代码来处理一组 XML 文档。它们采用 XML 格式,大量借鉴了 HTML,但添加了一些自定义标签,我的工作是将它们转换为真正的 HTML。现在最困扰我的自定义标签是<tab>
,它被用于各种不应该使用的地方。例如,它通常用于制作真正应该用<ol>
and制作的列表<li>
。这是我遇到的那种事情的一个例子:
我想把它变成:
为此,我需要获取<p>
包含<tab>
后代的元素(使用 Enlive 选择器很容易),并根据它们在原始 XML 文档中的自然分组以某种方式对它们进行聚类(要困难得多)。
我查看了文档并确定我不能依赖该class
属性:有时这些<p>
-that-should-be-<li>
元素与它们周围的元素具有相同的类<p>
,有时有两组连续的<p>
-that-应该<li>
是彼此具有相同类的元素(即,好像我发布的示例中的两个集群都具有类ListWithTabs
)。我认为我可以依赖的一件事是,如果没有至少一个非列表元素将它们分开,就永远不会有两个不同的列表:换句话说,任何<p>
具有属性“至少有一个<tab>
元素作为后代”都是同一个列表的一部分。
考虑到这一点,我在 REPL 上做了一些实验,在命名空间下加载了 Enlive e
(也就是说,(require '[net.cgrand.enlive-html :as e])
应该假设对我的所有其余问题都有效)。编写一个选择器来挑选我想要的元素很容易,但(e/select snippet [(e/has [:tab])])
会返回一个包含 5 个元素的列表(嗯,这确实是一个惰性序列)。但我想要的是一个列表列表:第一个包含三个元素,第二个包含两个。像这样模糊的东西(请原谅非标准的缩进):
我能够创建以下选择器:
但现在我被困住了。我想做类似的事情(e/select snippet [[(e/start-at first-of-tab-group) (e/take-while rest-of-tab-group)]])
,但据我所知,Enlive 没有像start-at
and这样的功能take-while
。
感觉就像我非常接近,但只是错过了最后一个关键步骤。那么我该如何迈出最后一步呢?如何只选择与某些规则匹配的元素“集群”,但忽略其他符合相同规则但不属于第一个“集群”的元素?
clojure - 如何编写这个 clojure enlive 程序以便它可以解析多个 url?
这是一个解析一些网站的程序。第一个站点是site1。解析该特定站点的所有逻辑都位于 (-> config :site1)
现在我想解析 (-> config :site1 :site-url) 中包含的页面。在这个例子中,我只使用了第一个 url,但是我如何设计它来真正for
为所有的 URL 做一个主人?
clojure - Enlive 中的可变 HTML 模板
我正在尝试找到一种“Enlivonic”方式来定义一个函数,该函数将对参数化的 html 模板执行转换。
换句话说,我如何定义类似 defsnippet 的东西,它也将模板作为参数?
我看了看,片段和转换,但我对宏有点迷失:-(
clojure - enlive 中的范围选择器
我正在尝试创建一个范围选择器,但似乎无法起步。
我正在尝试类似的事情:
这只是返回提供的 html。我希望它返回一个主体为“Hello”的 div。
我该怎么做呢?
编辑
为了更简洁,这是我用 deftemplate 和一个真正的 html 文件所做的:
HTML
CLJ
我正在关注本教程,但它使用一个片段来匹配范围。这是必要的吗?
是否可以用 just 测试这些sniptest
?
clojure - 使用 enlive 解析 html 片段
为什么以下代码段不起作用?
我是否必须先对 html-string 做一些事情才能将其转换为 clojure 数据结构或类似的东西?
clojure - In clojure enlive how to create template to add values and keys from a map
I want to create a template with Clojure's Enlive for a "table" like html page, that should have a header and rows. I want to populate this "table" with data that comes from this map. Basicaly I want to populate header with keys, and cells with vals from each of the maps that come from :event-data key.
My snippets and template look like this:
And index.html has these tags, that are rellevant for this template.
When I call the template I get this error:
ClassCastException clojure.lang.PersistentHashMap cannot be cast to java.util.Map$Entry clojure.lang.APersistentMap$ValSeq.first (APersistentMap.java:183) What am I doing wrong?