2012-08-09 155 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