Class: Qiita::Markdown::Filters::Code

Inherits:
HTML::Pipeline::Filter
  • Object
show all
Defined in:
lib/qiita/markdown/filters/code.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: Label

Instance Method Summary collapse

Instance Method Details

#callObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/qiita/markdown/filters/code.rb', line 15

def call
  result[:codes] ||= []
  doc.search("pre").each do |pre|
    if code = pre.at("code")
      label = Label.new(code["class"])
      filename = label.filename
      language = label.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
  end
  doc
end