2012-08-09 45 views
1

我试图用Liquid模板语言将原始字符串转换为html。我想要做的是转换这样的:这个将文本转换为液体模板中的段落

Hello. This 
is a text. 

Please convert me. 

<p>Hello. This<br /> 
is a text.</p> 
<p>Please convert me.</p> 

我试了一下

{{ mytextvariable | newline_to_br | replace: "<br />\n<br />", "</p><p>" | replace: "<p></p>", "" | prepend: '<p>' | append: '</p>' }} 

,但是这给了我(注双<br />):

<p>Hello. This<br /> 
is a text.<br /> 
<br /> 
Please convert me.</p> 

网站注释

这将用于Shopify网站。

回答

1

从我所看到的,Liquid不支持正则表达式,所以替换:"<br />\n<br />"可能会被逐字解释。

作为一个新的过滤器可能更容易实现吗?

...是这样的:

def newline_to_p_or_br(input) 
    input.to_s.gsub(/(.*?)\n\n/, "<p>\1</p>").gsub(/\n/, "<br />\n") 
end 

这里是供参考的newline_to_br定义: http://rubydoc.info/gems/liquid/2.2.2/Liquid/StandardFilters:newline_to_br

+0

谢谢!这可能会奏效。我应该更具体。我在Shopify上使用Liquid。不要认为他们允许我做新的过滤器。我会试着研究,看看他们是否做。 – iDev247 2012-08-13 17:47:18

2

您使用newline_to_br时更换新线,换行标记,所以第一置换将不会取代任何东西,换行符不见了。

+0

这是回应我的推文吗? ......我也试过'替换: “

”, “

”'取代'取代:“
\ n
”, “

”',但它似乎没有任何工作。 – iDev247 2012-08-13 17:46:28