Module: Asciidoctor::Extensions

Defined in:
lib/asciidoctor/extensions.rb

Overview

Asciidoctor processor.

Defined Under Namespace

Modules: BlockProcessorDsl, DocinfoProcessorDsl, DocumentProcessorDsl, IncludeProcessorDsl, InlineMacroProcessorDsl, MacroProcessorDsl, SyntaxProcessorDsl Classes: BlockMacroProcessor, BlockProcessor, DocinfoProcessor, Extension, Group, IncludeProcessor, InlineMacroProcessor, MacroProcessor, Postprocessor, Preprocessor, Processor, ProcessorExtension, Registry, TreeProcessor

Constant Summary collapse

Treeprocessor =

Alias deprecated class name for backwards compatibility

TreeProcessor

Class Method Summary collapse

Class Method Details

.create(name = nil, &block) ⇒ Object



1452
1453
1454
1455
1456
1457
1458
# File 'lib/asciidoctor/extensions.rb', line 1452

def create name = nil, &block
  if block_given?
    Registry.new (name || generate_name) => block
  else
    Registry.new
  end
end

.generate_name ⇒ Object



1439
1440
1441
# File 'lib/asciidoctor/extensions.rb', line 1439

def generate_name
  %(extgrp#{next_auto_id})
end

.groups ⇒ Object



1448
1449
1450
# File 'lib/asciidoctor/extensions.rb', line 1448

def groups
  @groups ||= {}
end

.next_auto_id ⇒ Object



1443
1444
1445
1446
# File 'lib/asciidoctor/extensions.rb', line 1443

def next_auto_id
  @auto_id ||= -1
  @auto_id += 1
end

.register(*args, &block) ⇒ Proc, Class or Object

Registers an extension Group that subsequently registers a collection of extensions.

Registers the extension Group specified under the given name. If a name is not given, one is calculated by appending the next value in a 0-based index to the string "extgrp". For instance, the first unnamed extension group to be registered is assigned the name "extgrp0" if a name is not specified.

The names are not yet used, but are intended for selectively activating extensions in the future.

If the extension group argument is a String or a Symbol, it gets resolved to a Class before being registered.

Examples:

Asciidoctor::Extensions.register UmlExtensions
Asciidoctor::Extensions.register :uml, UmlExtensions
Asciidoctor::Extensions.register do
  block_processor :plantuml, PlantUmlBlock
end
Asciidoctor::Extensions.register :uml do
  block_processor :plantuml, PlantUmlBlock
end

Parameters:

  • name —

    The name under which this extension group is registered (optional, default: nil)

  • group —

    A block (Proc), a Class, a String or Symbol name of a Class or an Object instance of a Class.

Returns:

  • (Proc, Class or Object) —

    Returns the Proc, Class or Object instance, matching the type passed to this method.



1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
# File 'lib/asciidoctor/extensions.rb', line 1494

def register *args, &block
  argc = args.size
  if block_given?
    resolved_group = block
  elsif (group = args.pop)
    # QUESTION should we instantiate the group class here or defer until activation??
    resolved_group = (Helpers.resolve_class group) || group
  else
    raise ::ArgumentError, %(Extension group to register not specified)
  end
  name = args.pop || generate_name
  unless args.empty?
    raise ::ArgumentError, %(Wrong number of arguments (#{argc} for 1..2))
  end
  groups[name.to_sym] = resolved_group
end

.unregister(*names) ⇒ void

This method returns an undefined value.

Unregister statically-registered extension groups by name.

Parameters:

  • names —

    one or more Symbol or String group names to unregister



1524
1525
1526
1527
# File 'lib/asciidoctor/extensions.rb', line 1524

def unregister *names
  names.each {|group| @groups.delete group.to_sym }
  nil
end

.unregister_all ⇒ void

This method returns an undefined value.

Unregister all statically-registered extension groups.



1514
1515
1516
1517
# File 'lib/asciidoctor/extensions.rb', line 1514

def unregister_all
  @groups = {}
  nil
end