使用Assemble / Grunt,是否可以小写&连字符来自YAML前面的变量

时间:2013-06-03 10:24:56

标签: yaml

我已经在github上问了这个问题,但是开发人员让我把它放在这里,看看是否有其他人有任何其他建议......

是否可以将YAML前端物质变量动态转换为小写并用连字符替换空格?

我问的原因是我正在为包含对当前页面的唯一引用的div添加一个类,在我的例子中是页面标题。我已经在前面设置了页面标题,所以如果我可以简单地重复使用它就会很棒。

为了说明,如果你能做到这样的话会很棒:

---
title: My Page Title
---
<div class="{{ title.hyphenize }}">
    <h1>{{ title }}</h1>
    ...
</div>

输出这个:

<div class="my-page-title">
    <h1>My Page Title</h1>
    ...
</div>

我是YAML Front Matter的新手,有什么可能,所以任何建议都会感激不尽。

1 个答案:

答案 0 :(得分:3)

我是汇编的开发人员之一,我认为最好将它放在stackoverflow上以供参考。这就是我提供的答案:

我认为处理此问题的最佳方法是使用把手助手或下划线模板。我们在helper lib repo中提供了几个把手助手,可以像下面这样使用......

---
title: My Page Title
---
<div class="{{hyphenate title}}">
    <h1>{{ title }}</h1>
    ...
</div>

这将用连字符替换空格,但不会使其小写。

另一种方法是在yaml标头内使用lodash模板:

---
title: My Page Title
class: <%= title.toLowerCase().split(" ").join("-") %>
---
<div class="{{class}}">
    <h1>{{ title }}</h1>
    ...
</div>

另外,@ jonschlinkert补充说,你可以将这两种方法结合起来:

---
title: My Page Title
class: <%= title.toLowerCase() %>
---
<div class="{{hyphenate class}}">
    <h1>{{ title }}</h1>
    ...
</div>

请告诉我这是否适合您。