1

Я хотел бы использовать Jekyll Responsive Image plugin для создания соответствующих реагирующих изображений с атрибутами srcset/sizes для изображений моих сообщений.С Jekyll 3, могу ли я преобразовать Markdown сообщения перед фактическим разборкой Markdown?

Но я также хотел бы иметь возможность редактировать свои сообщения в программном обеспечении, предоставляющем предварительный просмотр в реальном времени, например MacDown, который понимает только стандартный синтаксис Markdown для изображений.

Вот почему я хотел бы знать, если есть способ -a плагин некоторых sort- сказать Джекил превратить стандартный синтаксис Markdown для изображений, которые я хотел бы поставить в моих Markdown файлы ...

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

... в этот синтаксис специфичным к Jekyll Responsive Image plugin:

{% responsive_image path: path/to/image.jpg alt: "alt text" %}

а потом, Джекил мог продолжать и использовать Kramdown для генерации HTML ...

Я также создал an issue in the plugin's Github, но более общий ответ был бы приятным и, возможно, полезным для других нужд.

ответ

3

Да, это, безусловно, возможно. С 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 

Этот конвертер будет gsub содержание любого .md файла.

Надеюсь, это поможет!

+0

Это потрясающе, и так просто, спасибо большое! –

+0

Я попытался использовать это в новом плагине, но, похоже, синтаксис Liquid, который я генерирую с помощью моего ['Cloudinary' converter] (https://github.com/nhoizey/nicolas-hoizey.com/blob/8f49a34dd444b000520aeb7731d0a8ca17415615/_plugins/ cloudinary.rb # L84-L107) не анализируется после. Должен ли я явно позвонить в Kramdown? –

+0

Связанные: http://stackoverflow.com/questions/38126629/how-is-the-priority-flag-in-jekyll-plugins-supposed-to-work –

1

решение Простейшие является использование новой Jekyll hooks

очень сырым плагин может быть:

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

+0

Мне нравится [parkr] (http://stackoverflow.com/users/716249/parkr) ответ лучше, но этот тоже дает мне новые идеи, поэтому большое спасибо! –

Смежные вопросы