我想将一些标记内容分为水平线表示的部分。在标准的Markdown中,这用3个或更多的星号,破折号或下划线表示。因此,我需要将一些纯文本内容分配为
***
,---
或___
,任何数量也超过三个,以便五个破折号,-----
,也可以正常工作。
目前,我有以下我正在解析的降价文件:
---
layout: section_one
---
Content here!
-----
Another section in markdown
-----
Final content.
然后将布局文件命名为cant in content:section_one.html
用内容:
<!-- DOCTYPE and html/body and stuff -->
{% assign content_split = content | split: "<hr>" %}
<div>{{ content_split[0] }}</div>
根据可爱的shopify液体文档,字符串上有一个split
滤波器。由于
content
数据似乎包含解析的HTML,因此我尝试按
<hr>
TAG分配。这并没有将内容分开。然后,我尝试用
---
和
-----
将内容分配,因为这是我在Markdown文件中所拥有的,这也不起作用。
最终,我尝试使用
page.content
而不是content
-
,但它确实有效,但并不是很紧凑,因为我需要拆分并剥离额外的
*
,
_
和
{{ page.content | split: '---' | join: "\u2063" | split '***' | ... way more here ... | split "\u2063" }}
。总体上变成了类似的标签:
-
this公式的缺点是只能使用3个字符,不超过3个字符。列表如何最好地按水平线路分配降价字符串或解析的降价(HTML)?
在进行更多研究之后,我决定制作一个自定义的液体过滤器。创建液体过滤器时,您可以将一些内容作为输入和参数。不确定如何最好地将参数用于此用例,但是到目前为止,我所拥有的相当简单。
-
如果您不使用Jekyll,则可能需要将module Jekyll
module MarkdownSplit
def markdown_split(content)
content.split(/^\s*[-*_]{3,}\s*$/m)
end
end
end
Liquid::Template.register_filter(Jekyll::MarkdownSplit)
---
***
line(不仅仅是线/短语的一部分)匹配的正则拨号。这意味着,如果您连续有两个,则最终可能会有空内容,因此我将其留给内容创建者以查看此内容。