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_nameObject



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

def generate_name
  %(extgrp#{next_auto_id})
end

.groupsObject



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

def groups
  @groups ||= {}
end

.next_auto_idObject



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_allvoid

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