Html Clojurescript多词替换(及更多)
我在数据库中有卡片,每张卡片上都有一些段落的文字。我想用HTML符号替换“特定短语”。因此,当它们显示时,短语是符号而不是文本 我的代码工作得非常完美,除了调用final函数的方式 (我会尽量避免信息过载,但是) 我这样调用最后一个函数:Html Clojurescript多词替换(及更多),html,clojurescript,reduce,Html,Clojurescript,Reduce,我在数据库中有卡片,每张卡片上都有一些段落的文字。我想用HTML符号替换“特定短语”。因此,当它们显示时,短语是符号而不是文本 我的代码工作得非常完美,除了调用final函数的方式 (我会尽量避免信息过载,但是) 我这样调用最后一个函数: ...{:__html (add-symbols (add-symbols
...{:__html (add-symbols
(add-symbols
(add-symbols
(add-symbols
(add-symbols
(add-symbols
(add-symbols
(add-symbols
(add-symbols
(add-symbols
(add-symbols
(add-symbols
(:text card)))))))))))))}
我这样调用此函数的原因是,add symbols函数接受“card text”并找到第一个匹配项,然后返回更新后的“card text”或(:text card),然后再次调用它
由于第一次出现的符号已经消失,并被html编码的符号替换,我可以再次扫描和替换,等等,这个次数将覆盖文本的数量和符号的频率
但最近,我一直在与《勇敢者》杂志讨论Clojure,我偶然发现并注意到fn(减少…)
我知道这不一定容易。但我想的是这样的:
(reduce add-symbols (:text card))
就像我说的,我知道这不会那么容易,;)但是,我应该循环一下吗?还是什么
我以前的代码可以工作,但它太可怜了,完全遍历所有和任何文本,替换所有短语,无论段落长度如何,使用一些锐利的reduce,将是理想的
谢谢你的帮助 作为一个概括性的提纲,您可能需要:
{ :__html
(loop [curr-card (:text card)]
(if (is-finished curr-card)
curr-card
(recur (add-symbols curr-card)))) }
但是
功能已完成
功能,并且添加符号
将取决于您的详细信息(请更新问题)。作为一个大致的提纲,您可能需要:
{ :__html
(loop [curr-card (:text card)]
(if (is-finished curr-card)
curr-card
(recur (add-symbols curr-card)))) }
但是
功能已经完成
并且添加符号
将取决于您的详细信息(请更新问题)。好吧,我本来是在循环,然后我读了您的帖子,我想我可能在正确的轨道上,但是(这种语言很难,但当你成功的时候,你会有一种很好的感觉,就像“过去的日子”一样。)
我甚至尝试了let和loop,因为我意识到我所做的只是“伪递归”手动调用我的函数,13次,然后说,那就足够了。在学习了这么多之后,最后,我决定(在
)由于“is finished”子句的原因,最好在时使用
此代码完成作业:
...{:__html
(let [new-text (atom (add-symbols (:text card)))]
(when (= @new-text (add-symbols @new-text))
@new-text
(swap! new-text #(add-symbols @new-text))))}...
使用循环
...{:__html
(loop [new-text (:text card)]
(if (= new-text (add-symbols new-text))
new-text
(recur (add-symbols new-text))))}...
他们(都)工作得干净利落、刻薄。我不想说“更多信息”的原因是因为我读到了《勇敢的Clojure》中的一句话:
“相比之下,Clojure的结构非常简单且一致。无论您使用的是哪种运算符或您操作的是哪种数据,结构都是相同的。”
这对我来说意味着,“看,无论你在做什么,翻转煎饼或换轮胎,如果你有操作员和数据,在某些“核心”操作将是相同的,我喜欢Clojure!我知道我并不坚持使用纯不变的对象,但我想一个原子最终必须得到使用
哦,基本上“完成”是检查,运行FN,文本有变化吗
谢谢
其他源代码:
(defn make-span [text symbol path]
(.replace text (apply str symbol) (str "<img src='" path "'style=\"width:16px;height:16px;\"></img>")))
(defn add-symbols [card-text]
(-> (if (nil? card-text) "" card-text)
(make-span "[b]" "img/dc/me_bl.png")
(make-span "[c]" "img/dc/me_cs.png")
(make-span "[d]" "img/dc/me_dd.png")
(make-span "[f]" "img/dc/me_fd.png")
(make-span "[j]" "img/dc/me_ju.png")
(make-span "[s]" "img/dc/me_sl.png")
(make-span "[w]" "img/dc/me_wi.png")))
(defn- card-text
"Generate text html representation a card"
[card cursor]
[:div
[:h4 (:title card)]
[:div.text
[:p [:span.type (str (:type card))] (if (= (.toLowerCase (:type card)) (:Secondary card))
""
(str ": " (:Secondary card)))]
[:pre {:dangerouslySetInnerHTML #js {:__html
(let [new-text (atom (add-symbols (:text card)))]
(when (= @new-text (add-symbols @new-text))
@new-text
(swap! new-text #(add-symbols @new-text))))}}]]])
(defn make span[文本符号路径]
(.替换文本(应用str符号)(str“”))
(定义添加符号[卡片文本]
(->(如果(无?卡片文本)“”卡片文本)
(制作span“[b]”img/dc/me_bl.png)
(使span“[c]”img/dc/me_cs.png)
(制作span“[d]”img/dc/me\u dd.png)
(制作span“[f]”img/dc/me_fd.png)
(制作span“[j]”img/dc/me_ju.png)
(制作span“[s]”img/dc/me_sl.png)
(制作span“[w]”img/dc/me_wi.png)
(defn-卡片文本)
“生成卡片的文本html表示”
[卡片光标]
[:div
[:h4(:标题卡)]
[:div.text
[:p[:span.type(str(:type card))](如果((.toLowerCase(:type card))(:Secondary card))
""
(str:“(:辅助卡)))]
[:pre{:dangerouslysetinenerHTML#js{:u html
(让[新文本(atom(添加符号(:文本卡)))]
(当(=新文本时(在新文本时添加符号))
@新文本
(交换!新文本#(添加符号@新文本)))}]]
这里有更多的代码,但这并不是这个问题的真正目的或应用。我真的很兴奋能找到问题的确切点或“关键”,再次感谢!!好吧,我本来是要循环的,然后我读了你的帖子,我想我可能走对了路,但是(这种语言很难,但当你成功的时候,你会有一种很好的感觉,就像“过去的日子”一样。) 我甚至尝试了let和loop,因为我意识到我所做的只是“伪递归”手动调用我的函数,13次,然后说,那就足够了。在学习了这么多之后,最后,我决定(在 )由于“is finished”子句的原因,最好在时使用 此代码完成作业:
...{:__html
(let [new-text (atom (add-symbols (:text card)))]
(when (= @new-text (add-symbols @new-text))
@new-text
(swap! new-text #(add-symbols @new-text))))}...
使用循环
...{:__html
(loop [new-text (:text card)]
(if (= new-text (add-symbols new-text))
new-text
(recur (add-symbols new-text))))}...
他们(都)工作得干净利落、刻薄。我不想说“更多信息”的原因是因为我读到了《勇敢的Clojure》中的一句话:
“相比之下,Clojure的结构非常简单且一致。无论您使用的是哪种运算符或您操作的是哪种数据,结构都是相同的。”
这对我来说意味着,“看,无论你在做什么,翻转煎饼或换轮胎,如果你有操作员和数据,在某些“核心”操作将是相同的,我喜欢Clojure!我知道我不坚持纯不变的对象,但我