问题标签 [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.

0 投票
1 回答
423 浏览

html - Clojure Enlive:如何将 enlive 嵌套地图数据转换回 HTML?

我正在为一个站点编写一个爬虫,目标是创建一个重新格式化的站点版本。作为抓取的一部分,我深入研究了一些评论,其中可能包含 html 格式,因此我们有:

{... :content ("而且,用小声说,\"这是" {:tag :em, :attrs nil, :content ("common")} "?\"")}

问题是:我可以获取这个 :content 值的内容并使用内置的 enlive 函数将它们转换为 HTML,如下所示:

这是<em>常见的</em>吗?

我可以看到我可以如何编写一些东西来处理这些标签,但我对自制任何东西都非常犹豫,因为我可能会错过边缘情况。

0 投票
2 回答
95 浏览

clojure - 无法通过存储在变量中的名称调用实时片段

我正在尝试使用 Clojure Enlive lib 做一些简单的事情:我希望页面的顶部菜单根据用户选择的语言(英语或日语)而有所不同。我找不到如何实现这个基本功能。

我有一个包含 2 个部分(每种语言一个)的“template/header.html”模板:

我在模板代码中创建了 2 个相应的片段:

现在,当我加载我的主模板 (index.html) 时,我想将我的标题菜单代码填充到我的导航标签中。

下面,参数“lang”的值是“en-US”或“ja-JP”:

它抛出一个 java.lang.NullPointerException

如果我将最后一行替换为

或者

它工作正常(所以片段工作),但我尝试了很多不同的语法,不能使动态标题基于语言工作。

如果我在 REPL 中手动执行上面的代码(让部分)似乎没问题,标题内容是包含正确内容的 JSON 对象,所以我不明白为什么我得到 NullPointerException。

理想情况下,我认为我应该只有一个片段将语言作为参数并返回相应的 HTML 部分,但也没有设法做到这一点。

我是 Clojure 的新手,所以我可能在这里遗漏了一些明显的东西;如果有人能指出我上面的代码有什么问题,或者用另一种方法来完成这项工作,那就太棒了。

谢谢,奥利维尔

0 投票
1 回答
215 浏览

jetty - HTML 实体显示为 ? 仅在通过 Jetty 服务时

我的 HTML 实体,例如&copy;mdash;显示为 ?,无论是在页面上呈现时还是在我查看底层源代码时 - 但仅在通过我的生产 Jetty 服务器(在webapps目录中)提供服务时。

当通过本地 Nginx 从静态文件提供 HTML 实体时,它们看起来很好。在使用嵌入式 Jetty 开发 Pedestal 应用程序时,它们看起来也不错。这是 HTML 头:

我该如何解决这个问题?可能出了什么问题?或者,如果失败了,我该如何调试?

一些想法:

首先,我在生产中使用 Jetty 9.1.X。我的开发服务器使用(来自lein deps :tree):

我应该仔细检查 Jetty 9 生产设置吗?

其次,我正在使用Enlive。它依赖于以下依赖项(来自lein deps :tree):

我想知道TagSoup在生产与开发中的行为是否有所不同。

更新

以下是响应标头:

text/html;charset=UTF-8似乎排除了码头是问题所在。我认为 TagSoup 的行为有可能(甚至很可能)不像我预期的那样。

我目前正在 Enlive 邮件列表中阅读此主题:mdash output as question mark

更新:我的 Clojure 模板(我使用的是 Enlive,但我刚刚切换到 Laser——但这方面两者的行为相同)将 HTML 实体转换为 Unicode。问题似乎是我的安装 Jetty 9 没有配置(或者我没有给它它需要的东西)来处理 Unicode 字符。

0 投票
1 回答
90 浏览

clojure - 激活:将参数从选择器传递到转换

我在 enlive 中有一些转变:

它遵循一个模式。所以我想以某种方式抽象出这种模式。我想如果这样的事情是可能的:

我知道对于这样一个简单的例子来说这有点过分了,但你明白了这个概念。

0 投票
0 回答
169 浏览

clojure - 如何使用 Enliven 解析 HTML?

这是一个使用 Enlive的解析示例。与Enliven有区别吗?

如果在这个简单的例子中没有太大的区别,那么在进行一些网络抓取时,Enliven 会有什么不同呢?

谢谢!

0 投票
1 回答
131 浏览

clojure - 启用模板 - 如何将脚本附加到页面末尾

我正在向我的页面添加自定义主干.js 脚本,它需要位于页面末尾,

我已经查看了将脚本添加到 html 头部的解决方案,如下所述:Enlive 模板 – 添加到头部部分

不幸的是,我需要在页面底部添加脚本。

0 投票
2 回答
241 浏览

regex - 使用 Enlive 和 Clojure 提取 MLA 引用的 HTML

我的目标是从网页中提取和解析一系列参考书目,以便稍后输入数据库。参考文献均采用 MLA 格式。对于 MLA 格式书目的所有实例,这应该是一个通用解决方案,并且应该不仅仅适用于下面所示的网页。

这是我的尝试代码,它不起作用:

我希望宏extract-re创建一个在所有活动节点上doseq运行正则表达式匹配器 ( ) 的宏。re-find有两个变量需要更改:一个是正则表达式本身,另一个是修饰符,它在处理激活节点之前对其进行修改。如果没有修饰符,正则表达式将匹配作者某些标题。我尝试编写一个函数,但不能让它在一般情况下工作,所以我认为宏是要走的路。

在 MLA 引用中,我认为在激活节点上使用修饰符比使用正则表达式进行所有提取更容易,尽管我可能错了。我想不出如何做一个只匹配标题或只匹配作者的正则表达式。

那么,如何将修饰符传递给宏并使其正确执行?我不完全理解宏的引用细节,所以我可能对我是如何编写宏开始的,或者即使宏是必要的。

0 投票
1 回答
84 浏览

clojure - Clojure:为什么 sniptest 会产生 LazySeq

我在 enlive 中创建了一个模板,并且在使用这个产生lazyseq 的片段时遇到了问题。当我在 REPL 中尝试这个 sniptest 时,它会产生“clojure.lang.LazySeq@ba6da9f2”。

测试它所需的其余代码如下所示

index.html 文件看起来像这样(也可以在这里找到http://www.filedropper.com/index_25))

我看到了一个类似的问题,但解决方案是使用内容而不是 html-content。不知道是什么导致了这里的问题......

0 投票
1 回答
153 浏览

clojure - Clojure:enlive deftemplate 不能使用片段

我正在尝试创建生成包含一些数据的表的模板。数据来自 msh-contents 中定义的映射。

所以,在 REPL 中调用模板

产生错误:IllegalArgumentException ArityException 传递给的 args (0) 数量错误:PersistentArrayMap clojure.lang.AFn.throwArity (AFn.java:437),这可能是因为片段产生了 LazySeq。

0 投票
1 回答
252 浏览

clojure - Reading web page with log in (clojure)

I need to download some contents of a web page daily and I plan on using enlive for that. Trouble is, that I need to log in in with a POST first and the authentification of the page that I am interested in is then done with the session's cookies. So I can't just use

I didn't find a way to do this in clojure. Otherwise doing the reading in Java would be fine as well. In the end it should work as a worker on heroku.

Thanks!