Class: Qiita::Markdown::BaseProcessor

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

Overview

An abstract base processor for rendering a Markdown document.

Direct Known Subclasses

Processor, SummaryProcessor

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(context = {}) ⇒ BaseProcessor

Returns a new instance of BaseProcessor.

Parameters:

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

    Optional context for HTML::Pipeline.



16
17
18
# File 'lib/qiita/markdown/base_processor.rb', line 16

def initialize(context = {})
  @context = self.class.default_context.merge(context)
end

Class Method Details

.default_contextHash

Returns the default context for HTML::Pipeline.

Returns:

  • (Hash)

    the default context for HTML::Pipeline

Raises:

  • (NotImplementedError)


6
7
8
# File 'lib/qiita/markdown/base_processor.rb', line 6

def self.default_context
  raise NotImplementedError
end

.default_fitersArray<Class>

Returns the default HTML::Pipeline filter classes.

Returns:

  • (Array<Class>)

    the default HTML::Pipeline filter classes

Raises:

  • (NotImplementedError)


11
12
13
# File 'lib/qiita/markdown/base_processor.rb', line 11

def self.default_fiters
  raise NotImplementedError
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.



31
32
33
# File 'lib/qiita/markdown/base_processor.rb', line 31

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>)


37
38
39
# File 'lib/qiita/markdown/base_processor.rb', line 37

def filters
  @filters ||= self.class.default_filters
end