如何使用 Liquid 获取 Markdown 页面中的所有引用样式链接?

问题描述 投票:0回答:1

Markdown 支持引用样式的链接,您可以将语义链接名称放置在文件底部:

Today I found a [movie][EEAAO] that [changed my life].

[EEAAO]: https://en.wikipedia.org/wiki/Everything_Everywhere_All_at_Once
[changed my life]: https://blog.example.com/This-movie-changed-my-life

我想使用 Liquid 提取这些引用链接,以便我可以在页面底部列出来源。

有什么办法可以做到吗?

hyperlink liquid citations
1个回答
0
投票

Liquid 本身并不原生解析 markdown,但您可以手动提取并处理链接

{% assign markdown_content = page.content %}

{%- comment -%}
   Split the markdown content into lines
{%- endcomment -%}
{% assign lines = markdown_content | split: "\n" %}

{%- comment -%}
   Loop through the lines and look for lines matching the citation link format
{%- endcomment -%}
<ul>
{% for line in lines %}
  {%- comment -%}
     Match lines like [key]: URL
  {%- endcomment -%}
  {% if line contains ']: ' %}
    {% assign link_parts = line | split: ']: ' %}
    {% assign link_name = link_parts[0] | remove: "[" %}
    {% assign link_url = link_parts[1] | strip %}

    <li>
      <strong>{{ link_name }}</strong>: <a href="{{ link_url }}">{{ link_url }}</a>
    </li>
  {% endif %}
{% endfor %}
</ul>

但是,您必须确保引文链接始终以预期格式显示:

[name]: URL
,因为 Liquid 不支持传统编程语言那样的完整正则表达式功能。

© www.soinside.com 2019 - 2024. All rights reserved.