class Qiita::Markdown::Filters::CodeBlock

  1. Detects language written in <pre> element.

  2. Adds lang attribute (but this attribute is consumed by syntax highlighter).

  3. Adds detected code data into ‘result`.

You can pass language aliases table via context.

Public Instance Methods

call() click to toggle source
# File lib/qiita/markdown/filters/code_block.rb, line 16
def call
  result[:codes] ||= []
  doc.search("pre").each do |pre|
    next unless (code = pre.at("code"))

    metadata = Metadata.new(code["data-metadata"])
    filename = metadata.filename
    language = metadata.language
    language = language_aliases[language] || language
    pre["filename"] = filename if filename
    pre["lang"] = language if language
    result[:codes] << {
      code: pre.text,
      filename: filename,
      language: language,
    }
  end
  doc
end

Private Instance Methods

language_aliases() click to toggle source
# File lib/qiita/markdown/filters/code_block.rb, line 38
def language_aliases
  context[:language_aliases] || DEFAULT_LANGUAGE_ALIASES
end