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.
Public: Get the configuration Hash for this processor instance.
Public: Get the static configuration for this processor class.
Returns a configuration [Hash]
# File lib/asciidoctor/extensions.rb, line 40 def config @config ||= {} end
# File lib/asciidoctor/extensions.rb, line 82 def initialize config = {} @config = self.class.config.merge config end
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
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
# 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
# File lib/asciidoctor/extensions.rb, line 98 def create_image_block parent, attrs, opts = {} create_block parent, :image, nil, attrs, opts end
# File lib/asciidoctor/extensions.rb, line 102 def create_inline parent, context, text, opts = {} Inline.new parent, context, text, opts end
Public: Parses blocks in the content and attaches the block to the parent.
Returns nothing
# File lib/asciidoctor/extensions.rb, line 111 def parse_content parent, content, attributes = {} reader = (content.is_a? Reader) ? reader : (Reader.new content) while reader.has_more_lines? block = Parser.next_block reader, parent, attributes parent << block if block end nil end
# File lib/asciidoctor/extensions.rb, line 90 def process *args raise ::NotImplementedError end
# File lib/asciidoctor/extensions.rb, line 86 def update_config config @config.update config end