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.
If the process method returns an instance of Block
, the content model of that Block
is :compound, and the Block
contains at least one line, the parser will parse those lines into blocks an assigned them to the returned block.
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)
-
:positional_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
Asciidoctor::Extensions::Processor::new
# File lib/asciidoctor/extensions.rb, line 536 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 552 def process parent, reader, attributes raise ::NotImplementedError, %(#{BlockProcessor} subclass #{self.class} must implement the ##{__method__} method) end