Class: Qiita::Markdown::Processor

Inherits:
Object
  • Object
show all
Defined in:
lib/qiita/markdown/processor.rb

Constant Summary collapse

DEFAULT_CONTEXT =
{
  asset_root: "/images",
}
DEFAULT_FILTERS =
[
  Filters::Redcarpet,
  Filters::Sanitize,
  Filters::Footnote,
  Filters::Code,
  Filters::Checkbox,
  Filters::Toc,
  HTML::Pipeline::EmojiFilter,
  Filters::SyntaxHighlight,
  Filters::Mention,
]

Instance Method Summary collapse

Constructor Details

#initialize(context = {}) ⇒ Processor

Returns a new instance of Processor.

Parameters:

  • context (Hash) (defaults to: {})

    Optional context for HTML::Pipeline.



21
22
23
# File 'lib/qiita/markdown/processor.rb', line 21

def initialize(context = {})
  @context = DEFAULT_CONTEXT.merge(context)
end

Instance Method Details

#call(input, context = {}) ⇒ Hash

Converts Markdown text into HTML string with extracted metadata.

Examples:

Qiita::Markdown::Processor.new.call(markdown) #=> {
  codes: [...],
  mentioned_usernames: [...],
  output: "...",
}

Parameters:

  • input (String)

    Markdown text.

  • context (Hash) (defaults to: {})

    Optional context merged into default context.

Returns:

  • (Hash)

    Process result.



36
37
38
# File 'lib/qiita/markdown/processor.rb', line 36

def call(input, context = {})
  HTML::Pipeline.new(filters, @context).call(input, context)
end

#filtersArray<HTML::Pipeline::Filter>

Note:

Modify filters if you want.

Returns:

  • (Array<HTML::Pipeline::Filter>)


42
43
44
# File 'lib/qiita/markdown/processor.rb', line 42

def filters
  @filters ||= DEFAULT_FILTERS
end