class Asciidoctor::Extensions::Processor

Public: An abstract base class for document and syntax processors.

This class provides access to a class-level Hash for holding default configuration options defined using the {Processor.option} method. This style of default configuration is specific to the native Ruby environment and is only consulted inside the initializer. An overriding configuration Hash can be passed to the initializer. Once the processor is initialized, the configuration is accessed using the {Processor#config} instance variable.

Instances of the Processor class provide convenience methods for creating AST nodes, such as Block and Inline, and for parsing child content.

Attributes

config[R]

Public: Get the configuration Hash for this processor instance.

Public Class Methods

config() click to toggle source

Public: Get the static configuration for this processor class.

Returns a configuration [Hash]

# File lib/asciidoctor/extensions.rb, line 40
def config
  @config ||= {}
end
extend_dsl()
Alias for: use_dsl
include_dsl()
Alias for: use_dsl
new(config = {}) click to toggle source
# File lib/asciidoctor/extensions.rb, line 82
def initialize config = {}
  @config = self.class.config.merge config
end
option(key, default_value) click to toggle source

Public: Assigns a default value for the specified option that gets applied to all instances of this processor.

Examples

option :contexts, [:open, :paragraph]

Returns nothing

# File lib/asciidoctor/extensions.rb, line 52
def option key, default_value
  config[key] = default_value
end
use_dsl() click to toggle source

Include the DSL class for this processor into this processor class or instance.

This method automatically detects whether to use the include or extend keyword based on what is appropriate.

NOTE Inspiration for this DSL design comes from corcoran.io/2013/09/04/simple-pattern-ruby-dsl/

Returns nothing

# File lib/asciidoctor/extensions.rb, line 64
def use_dsl
  if self.name.nil_or_empty?
    # NOTE contants(false) doesn't exist in Ruby 1.8.7
    #include const_get :DSL if constants(false).grep :DSL
    include const_get :DSL if constants.grep :DSL
  else
    # NOTE contants(false) doesn't exist in Ruby 1.8.7
    #extend const_get :DSL if constants(false).grep :DSL
    extend const_get :DSL if constants.grep :DSL
  end
end
Also aliased as: extend_dsl, include_dsl

Public Instance Methods

create_block(parent, context, source, attrs, opts = {}) click to toggle source
# File lib/asciidoctor/extensions.rb, line 94
def create_block parent, context, source, attrs, opts = {}
  Block.new parent, context, { :source => source, :attributes => attrs }.merge(opts)
end
create_image_block(parent, attrs, opts = {}) click to toggle source
# File lib/asciidoctor/extensions.rb, line 98
def create_image_block parent, attrs, opts = {}
  create_block parent, :image, nil, attrs, opts
end
create_inline(parent, context, text, opts = {}) click to toggle source
# File lib/asciidoctor/extensions.rb, line 102
def create_inline parent, context, text, opts = {}
  Inline.new parent, context, text, opts
end
parse_content(parent, content, attributes = nil) click to toggle source

Public: Parses blocks in the content and attaches the block to the parent.

Returns The parent node into which the blocks are parsed.

# File lib/asciidoctor/extensions.rb, line 111
def parse_content parent, content, attributes = nil
  reader = Reader === content ? content : (Reader.new content)
  while reader.has_more_lines?
    block = Parser.next_block reader, parent, (attributes ? attributes.dup : {})
    parent << block if block
  end
  parent
end
process(*args) click to toggle source
# File lib/asciidoctor/extensions.rb, line 90
def process *args
  raise ::NotImplementedError
end
update_config(config) click to toggle source
# File lib/asciidoctor/extensions.rb, line 86
def update_config config
  @config.update config
end