液体标记 space 跟随可选值
Liquid Markup space following optional value
Liquid Markup 中是否有一种标准方法来处理您想要在某个值后输出 space,但前提是该值存在的情况?
例如,假设我有四个值:prefix、first、middle、last。每个人都有第一个和最后一个,但只有一些人有前缀 and/or middle.
如果我只做 {{prefix}} {{first}} {{middle}} {{last}}
,那么如果没有前缀或没有中间名,我将得到额外的 spaces。
Mr. John Mortimer Smith <-- looks fine
Mary Jones <-- looks weird, extra space at beginning and in middle
当然可以
{% if prefix != "" %}{{prefix}} {% endif %}{{first}} {% if middle != "" %}{{middle}} {% endif %}{{last}}
这应该可行,但看起来很乱。有没有更好的方法?
谢谢!
有人问我举个例子。如果我去 http://dotliquidmarkup.org/try-online
然后输入
{% assign first = "Mary" %} {% assign last = "Smith" %}
{{ prefix }} {{first}} {{middle}} {{last}}
然后我得到
Mary Smith
(在 Mary 之前有一个 space,在 Mary 之后有两个 space,因为前缀和中间为空)
但我想得到
Mary Smith
http://dotliquidmarkup.org/try-online 在保留空格的 <pre>
标签中呈现流动解析结果。
在标准 html 页面中,情况并非如此,在 pre
和 code
标签中,多个空格显示为一个。
如果你真的想去掉多个空格,你可以使用normalize_whitespace
过滤器。
whitespaces.md
---
title: Whitespaces
names:
-
prefix: m
first: first
middle: middle
last: last
-
prefix: m
first:
middle: middle
last: last
-
prefix:
first: first
middle:
last: last
---
{% for p in page.names %}
{% capture fullName %}
{{ p.prefix }} {{ p.first }}
{{ p.middle }} {{ p.last }}
{% endcapture %}
<pre>|{{ fullName }}|</pre>
<pre>|{{ fullName | normalize_whitespace }}|</pre>
{% endfor %}
不再有双空格或任何不必要的空格。
Liquid Markup 中是否有一种标准方法来处理您想要在某个值后输出 space,但前提是该值存在的情况?
例如,假设我有四个值:prefix、first、middle、last。每个人都有第一个和最后一个,但只有一些人有前缀 and/or middle.
如果我只做 {{prefix}} {{first}} {{middle}} {{last}}
,那么如果没有前缀或没有中间名,我将得到额外的 spaces。
Mr. John Mortimer Smith <-- looks fine
Mary Jones <-- looks weird, extra space at beginning and in middle
当然可以
{% if prefix != "" %}{{prefix}} {% endif %}{{first}} {% if middle != "" %}{{middle}} {% endif %}{{last}}
这应该可行,但看起来很乱。有没有更好的方法?
谢谢!
有人问我举个例子。如果我去 http://dotliquidmarkup.org/try-online 然后输入
{% assign first = "Mary" %} {% assign last = "Smith" %}
{{ prefix }} {{first}} {{middle}} {{last}}
然后我得到
Mary Smith
(在 Mary 之前有一个 space,在 Mary 之后有两个 space,因为前缀和中间为空)
但我想得到
Mary Smith
http://dotliquidmarkup.org/try-online 在保留空格的 <pre>
标签中呈现流动解析结果。
在标准 html 页面中,情况并非如此,在 pre
和 code
标签中,多个空格显示为一个。
如果你真的想去掉多个空格,你可以使用normalize_whitespace
过滤器。
whitespaces.md
---
title: Whitespaces
names:
-
prefix: m
first: first
middle: middle
last: last
-
prefix: m
first:
middle: middle
last: last
-
prefix:
first: first
middle:
last: last
---
{% for p in page.names %}
{% capture fullName %}
{{ p.prefix }} {{ p.first }}
{{ p.middle }} {{ p.last }}
{% endcapture %}
<pre>|{{ fullName }}|</pre>
<pre>|{{ fullName | normalize_whitespace }}|</pre>
{% endfor %}
不再有双空格或任何不必要的空格。