转换器 Converters
如果你想在你的网站中使用一种新的标记语言,你可以通过实现自己的转换器来将其集成进去。Markdown 和 Textile 标记语言都是通过这种方式实现的。
记住你的 Front Matter
即使是通过插件添加的转换器,Jekyll 也只会转换那些文件顶部包含 YAML 头信息的文件。
下面是一个转换器示例,它会处理所有以 .upcase 结尾的文章,并使用 UpcaseConverter 进行处理:
module Jekyll
class UpcaseConverter < Converter
safe true
priority :low
def matches(ext)
ext =~ /^\.upcase$/i
end
def output_ext(ext)
".html"
end
def convert(content)
content.upcase
end
end
end
转换器至少需要实现 3 个方法:
| 方法 | 描述 |
|---|---|
|
|
判断给定的文件扩展名是否匹配该转换器支持的扩展名列表。
接收一个参数:文件的扩展名(包含点号)。
如果匹配必须返回 |
|
|
输出文件的扩展名(包含点号)。
通常为 |
|
|
用于执行内容转换的逻辑。 接收一个参数:文件的原始内容(不包含 front matter)。 必须返回一个 String。 |
在这个示例中,UpcaseConverter#matches 会检查文件扩展名是否为 .upcase,如果是,就使用该转换器进行渲染。它会调用 UpcaseConverter#convert 来处理内容。在这个简单的转换器中,我们只是将整个内容字符串转换为大写。最后,在保存页面时,它会使用 .html 作为输出扩展名。