class Asciidoctor::Extensions::BlockProcessor
Public: BlockProcessors are used to handle delimited blocks and paragraphs that have a custom name.
When Asciidoctor encounters a delimited block or paragraph with an unrecognized name while parsing the document, it looks for a BlockProcessor registered to handle this name and, if found, invokes its {Processor#process} method to build a corresponding node in the document tree.
AsciiDoc example:
[shout] Get a move on.
Recognized options:
-
:named - The name of the block (required: true)
-
:contexts - The blocks contexts on which this style can be used (default: [:paragraph, :open]
-
:content_model - The structure of the content supported in this block (default: :compound)
-
:pos_attrs - A list of attribute names used to map positional attributes (default: nil)
-
:default_attrs - A hash of attribute names and values used to seed the attributes hash (default: nil)
-
…
BlockProcessor implementations must extend BlockProcessor.
Constants
- DSL
Attributes
Public Class Methods
# File lib/asciidoctor/extensions.rb, line 462 def initialize name = nil, config = {} super config @name = name || @config[:name] # assign fallbacks case @config[:contexts] when ::NilClass @config[:contexts] ||= [:open, :paragraph].to_set when ::Symbol @config[:contexts] = [@config[:contexts]].to_set else @config[:contexts] = @config[:contexts].to_set end # QUESTION should the default content model be raw?? @config[:content_model] ||= :compound end
Public Instance Methods
# File lib/asciidoctor/extensions.rb, line 478 def process parent, reader, attributes raise ::NotImplementedError, %(Asciidoctor::Extensions::BlockProcessor subclass must implement ##{__method__} method) end