我正在尝试编写某种通用布局,该布局可以将字符串数组或的选项哈希作为参数 ,因此您可以执行以下操作:< / p>
option:
- "<li><b>One:</b> This is</li>"
- "<li><b>Two:</b> Raw HTML</li>"
或者您可以这样做:
option:
One: This is
Two: a mapping
我想同时支持这两种方法的原因是,这是一个公共布局,并且第一个选项已经受 支持,但是我宁愿使用第二个选项,因此我想要一个同时支持两个版本的弃用期。
我在check if a variable is type of string or array in liquid中看到,有一种方法可以确定某物是数组还是字符串,但是数组和散列都具有first
属性!重用此功能的一种实用方法可能是检查变量也的第一个元素是否具有first
属性,如下所示:
{% if site.option.first %}
{% if site.option.first.first %}
hash
{% else %}
array
{% endif %}
{% else %}
Something else!
{% endif %}
但是,这似乎有点笨拙,有点骇人听闻-而且,如果传递了数组数组(即使在这种情况下,“数组数组”不被视为有效输入),它也会给出错误的答案。有更好的方法吗?
答案 0 :(得分:0)
对于您知道不会包含数字的数组,可以使用以下代码:
---
arr:
- ""
- "2"
- three
- null
hash:
foo: bar
baz: null
"0": 1
string: "a string"
---
nil: {{ page.nil_prop | map: "" | join: "," | size }} # 0
str: {{ page.string | map: "" | join: "," | size }} # 0
hash: {{ page.hash | map: "" | join: "," | size }} # 0
arr: {{ page.arr | map: "" | join: "," | size }} # 3
但是,如果数字潜入您的数组,您将得到Liquid Exception: no implicit conversion of String into Integer
。
这是Jekyll 3.8上的版本。