Yellow Rabbit

Добавляем microdata к rouge

Microdata для блоков с подсветкой синтаксиса в Jekyll

Чтобы указывать что за кусок кода я размещаю на странице я на скорую руку набросал плагин для Jekyll. Он добавляет микроразметку к блоку кода.

Plugin на коленке

Вместо ``` lang используем конструкцию {% mds lang %}. Например:

{% mds ruby %}

module Jekyll …

{% endmds %}

К фрагменту кода будет добалена microdata разметка:


<div itemscope="" itemtype="http://schema.org/SoftwareSourceCode">
<meta itemprop="codeSampleType" content="code snippet" />
<meta itemprop="programmingLanguage" content="ruby" />

Полный текст плагина

Просто помещаем файлик в каталог _plugins.


module Jekyll
  class MicrodataHighlightBlock < Liquid::Block
    def initialize(tag_name, params, tokens)
	    @lang = params.strip
      super
    end

    def render(context)
      contents = "\n``` " + @lang + "\n" + super + "\n```\n"

      site      = context.registers[:site]
      # pipe param through liquid to make additional replacements possible
      content = Liquid::Template.parse(contents).render context

      converter = site.find_converter_instance(Jekyll::Converters::Markdown)
      content = converter.convert(content)

      output = '<div itemscope itemscope itemtype="http://schema.org/SoftwareSourceCode"><meta itemprop="codeSampleType" content="code snippet" /><meta itemprop="programmingLanguage" content="' + @lang + '" />'
      output += content
      output += '</div>'
      output
    end
  end
end

Liquid::Template.register_tag("mds", Jekyll::MicrodataHighlightBlock)