Markdown 使用Jekyll 3,我可以转换一个post';在实际标记解析之前,是否进行标记?

Markdown 使用Jekyll 3,我可以转换一个post';在实际标记解析之前,是否进行标记?,markdown,jekyll,jekyll-extensions,responsive-images,kramdown,Markdown,Jekyll,Jekyll Extensions,Responsive Images,Kramdown,我想使用为我的帖子图像生成具有srcset/size属性的适当响应图像 但我也希望能够在一个提供实时预览的软件中编辑我的帖子,该软件只理解图像的标准标记语法 这就是为什么我想知道是否有一种方法-某种插件-告诉Jekyll转换图像的标准标记语法,我会将其放入我的标记文件中 ![alt text](path/to/image.jpg) …转换为以下特定的语法: {%responsive_图像路径:path/to/image.jpg alt:“alt text”%} 然后,Jekyll可以继续使用Kr

我想使用为我的帖子图像生成具有
srcset
/
size
属性的适当响应图像

但我也希望能够在一个提供实时预览的软件中编辑我的帖子,该软件只理解图像的标准标记语法

这就是为什么我想知道是否有一种方法-某种插件-告诉Jekyll转换图像的标准标记语法,我会将其放入我的标记文件中

![alt text](path/to/image.jpg)

…转换为以下特定的语法:

{%responsive_图像路径:path/to/image.jpg alt:“alt text”%}

然后,Jekyll可以继续使用Kramdown生成HTML


我也创建了,但一个更一般的答案也不错,可能对其他需求有用。

最简单的解决方案是使用新的

一个非常原始的插件可以是:

Jekyll::Hooks.register :posts, :pre_render do |post, payload|
  docExt = post.extname.tr('.', '')
  # only process if we deal with a markdown file
  if payload['site']['markdown_ext'].include? docExt
    newContent = post.content.gsub(/\!\[(.+)\]\((.+)\)/, '{% responsive_image path: \2 alt: \1  %}')
    post.content = newContent
  end
end

将其存储在plugins/img tag transform.rb中是的,这是绝对可能的。自Jekyll 3以来,每个文件扩展名可以有多个转换器。这允许您创建一个转换器,如:

class ResponsiveImageify < Jekyll::Converter
  priority :high

  def matches(ext)
    ext.downcase == ".md"
  end

  def convert(content)
    content.gsub(/\!\[(.+)\]\((.+)\)/, '{% responsive_image path: \2 alt: \1  %}')
  end
end
class-ResponsiveImageify
该转换器将
gsub
任何
.md
文件的内容


希望这有帮助

这里发布的示例打破了alt标记。 alt字符串需要被引用,否则会被截断为一个单词

e、 g.
content.gsub(/\!\[(.+)\]\((.+)\)/,“{%responsive\u图像路径:\2 alt:“\1”%}”)


另外,Nicolas Hoizey的帖子是我在最新版本的Jekyll(3.7)上唯一可以使用的帖子,我似乎无法让其他示例输出html。Markdown似乎是在插入液体标签之前呈现的。

我更喜欢的是的响应,但这一次也给了我新的想法,所以非常感谢!谢谢你!FWIW,我使用namedmatched修改了regex,还解析出了
标题
,并且
alt
标题
都是可选的。所以在我的例子中,那一行是这样的:
gsub
-行:
new\u content=post.content.gsub(/\!\[(?+)?\]\((?\S+)?(?*?)????)/,“{%responsive\u图像路径:\k alt:“\k”title:“\k”%}”)
。我试图在一个新插件中使用它,但我用my生成的流畅语法之后似乎没有被解析。我是否应该明确地称之为Kramdown?相关: