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 and append them to the returned block.
If your custom block can be applied to a paragraph or delimited block, and you want to preserve the content model of the input, check whether the value of the cloaked-context attribute is :paragraph. If it is, set the content model of the returned block to :simple. Otherwise, set the content model to :compound.
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 541 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 557 def process parent, reader, attributes raise ::NotImplementedError, %(#{BlockProcessor} subclass #{self.class} must implement the ##{__method__} method) end