Class: Qiita::Markdown::Filters::CodeBlock

Inherits:
HTML::Pipeline::Filter
  • Object
show all
Defined in:
lib/qiita/markdown/filters/code_block.rb

Overview

  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.

Defined Under Namespace

Classes: Metadata

Instance Method Summary collapse

Instance Method Details

#callObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 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.new(code["data-metadata"])
    filename = .filename
    language = .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