module Asciidoctor::Converter - asciidoctor-1.5.6.2 Documentation

# module Asciidoctor::Converter

A base module for defining converters that can be used to convert {AbstractNode} objects in a parsed AsciiDoc document to a backend format such as HTML or DocBook.

Implementing a converter involves:

- including this module in a {Converter} implementation class

- overriding the {Converter#convert} method

- optionally associating the converter with one or more backends using the {#register_for} DSL method imported by the {Config Converter::Config} module

Examples

    class TextConverter
      include Asciidoctor::Converter
      register_for 'text'
      def initialize backend, opts
        super
        outfilesuffix '.txt'
      end
      def convert node, transform = nil
        case (transform ||= node.node_name)
        when 'document'
          node.content
        when 'section'
          [node.title, node.content] * "\n\n"
        when 'paragraph'
          node.content.tr("\n", ' ') << "\n"
        else
          if transform.start_with? 'inline_'
            node.text
          else
            %Q(<#{transform}>\n)
          end
        end
      end
    end

    puts Asciidoctor.convert_file 'sample.adoc', backend: :text

### Public Class Methods

included(converter) click to toggle source

Mixes the {Config Converter::Config} module into any class that includes the {Converter} module.

converter - The Class that includes the {Converter} module

Returns nothing

    # File lib/asciidoctor/converter.rb, line 134
    def included converter
      converter.extend Config
    end

new(backend, opts = {}) click to toggle source

Public: Creates a new instance of Converter

backend - The String backend format to which this converter converts. opts - An options Hash (optional, default: {})

Returns a new instance of [Converter]

    # File lib/asciidoctor/converter.rb, line 148
    def initialize backend, opts = {}
      @backend = backend
      setup_backend_info
    end

### Public Instance Methods

convert(node, transform = nil, opts = {}) click to toggle source

    # Public: Invoked when this converter is added to the chain of converters in a {CompositeConverter}.
    #
    # owner - The CompositeConverter instance
    #
    # Returns nothing
    def composed owner
    end

# Public: Converts an {AbstractNode} using the specified transform along # with additional options. If a transform is not specified, implementations # typically derive one from the {AbstractNode#node_name} property. # # Implementations are free to decide how to carry out the conversion. In # the case of the built-in converters, the tranform value is used to # dispatch to a handler method. The {TemplateConverter} uses the value of # the transform to select a template to render. # # node - The concrete instance of AbstractNode to convert # transform - An optional String transform that hints at which transformation # should be applied to this node. If a transform is not specified, # the transform is typically derived from the value of the # node's node_name property. (optional, default: nil) # opts - An optional Hash of options that provide additional hints about # how to convert the node. (optional, default: {}) # # Returns the [String] result

    # File lib/asciidoctor/converter.rb, line 181
    def convert node, transform = nil, opts = {}
      raise ::NotImplementedError
    end

Also aliased as: convert_with_options
convert_with_options(node, transform = nil, opts = {})

Alias for backward compatibility.

Alias for: convert