Class/Object

laika.api

Transform

Related Docs: object Transform | package api

Permalink

abstract class Transform[Writer] extends TransformConfigBuilder[Writer] with InputOps with InputTreeOps

API for performing a transformation operation from and to various types of input and output, combining a parse and render operation.

In cases where a parse or render operation should be performed separately, for example for manually processing the document tree model between these operations, the laika.api.Parse and laika.api.Render APIs should be used instead.

Example for transforming from Markdown to HTML using files for both input and output:

Transform from Markdown to HTML fromFile "hello.md" toFile "hello.html"

Example for transforming an entire directory and its subdirectories to HTML in a target directory:

Transform from Markdown to HTML fromDirectory "source" toDirectory "target"

Example for transforming an entire directory and its subdirectories to a single PDF file:

Transform from Markdown to PDF fromDirectory "source" toFile "hello.pdf"

Or for transforming a document fragment from a string to the AST format for debugging purposes:

val input = "some *emphasized* text"

Transform from Markdown to AST fromString input toString

res0: java.lang.String =
Document - Blocks: 1
. Paragraph - Spans: 3
. . Text - 'some '
. . Emphasized - Spans: 1
. . . Text - 'emphasized'
. . Text - ' text'

Apart from specifying input and output, the Transform API also allows to customize the operation in various ways. The usingRule and creatingRule methods allow to rewrite the document tree between the parse and render operations and the rendering method allows to customize the way certain types of elements are rendered.

Writer

the writer API to use which varies depending on the renderer

Linear Supertypes
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Transform
  2. InputTreeOps
  3. InputOps
  4. TransformConfigBuilder
  5. RenderConfigBuilder
  6. ParseConfigBuilder
  7. OperationConfigBuilder
  8. AnyRef
  9. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. abstract type InputResult <: OutputOps

    Permalink

    The type of the result returned by all operations of this trait.

    The type of the result returned by all operations of this trait.

    Definition Classes
    TransformInputOps
  2. abstract type InputTreeResult <: OutputOps

    Permalink

    The type of the result returned by all operations of this trait.

    The type of the result returned by all operations of this trait.

    Definition Classes
    TransformInputTreeOps
  3. abstract type ThisType <: Transform[Writer]

    Permalink

    The type of the operation being configured by this instance

    The type of the operation being configured by this instance

    Definition Classes
    TransformOperationConfigBuilder

Abstract Value Members

  1. abstract def config: OperationConfig

    Permalink

    The configuration to use for all input operations.

    The configuration to use for all input operations.

    Definition Classes
    InputTreeOps
  2. abstract def fromDocument(doc: Document): InputResult

    Permalink

    Renders the specified document and returns a new target instance which allows to specify the output.

    Renders the specified document and returns a new target instance which allows to specify the output.

    doc

    the document to transform

    Attributes
    protected[this]
  3. abstract def fromTree(tree: DocumentTree): InputTreeResult

    Permalink

    Renders the specified document tree and returns a new target instance which allows to specify the output.

    Renders the specified document tree and returns a new target instance which allows to specify the output.

    tree

    the document tree to transform

    Attributes
    protected[this]
  4. abstract def withConfig(newConfig: OperationConfig): ThisType

    Permalink

    Returns a new instance with the specified configuration.

    Returns a new instance with the specified configuration.

    This method discards any previously specified options. It is usually meant to be used when copying over the configuration from a fully configured object to an unconfigured one.

    Definition Classes
    OperationConfigBuilder

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. def creatingRule(newRule: (DocumentCursor) ⇒ RewriteRule): ThisType

    Permalink

    Specifies a rewrite rule to be applied to the document tree model between the parse and render operations.

    Specifies a rewrite rule to be applied to the document tree model between the parse and render operations. This is identical to calling Document.rewrite directly, but if there is no need to otherwise access the document instance and just chain parse and render operations this hook is more convenient.

    The difference of this method to the usingRule method is that it expects a function that takes a Document instance and returns the rewrite rule. This way the full document can be queried before any rule is applied. This is necessary in cases where the rule (which gets applied node-by-node) depends on information from other nodes. An example from the built-in rewrite rules is the rule that resolves link references. To replace all link reference elements with actual link elements, the rewrite rule needs to know all LinkDefinitions the document tree contains.

    The rule itself is a partial function that takes an Element and returns an Option[Element].

    If the function is not defined for a specific element the old element remains in the tree unchanged. If it returns None then the node gets removed from the tree, if it returns an element it will replace the old one. Of course the function may also return the old element.

    The rewriting is performed in a way that only branches of the tree that contain new or removed elements will be replaced. It is processed bottom-up, therefore any element container passed to the rule only contains children which have already been processed.

    In case multiple rewrite rules need to be applied it may be more efficient to first combine them with orElse.

    Definition Classes
    TransformConfigBuilder
  7. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  8. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  9. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  10. val format: RenderFormat[Writer]

    Permalink
    Attributes
    protected
    Definition Classes
    TransformRenderConfigBuilder
  11. def fromDefaultDirectory(exclude: FileFilter = hiddenFileFilter)(implicit codec: Codec): InputTreeResult

    Permalink

    Returns the result obtained by parsing files from the current working directory.

    Returns the result obtained by parsing files from the current working directory.

    exclude

    the files to exclude from processing

    codec

    the character encoding of the files, if not specified the platform default will be used.

    Definition Classes
    InputTreeOps
  12. def fromDirectories(roots: Seq[File], exclude: FileFilter)(implicit codec: Codec): InputTreeResult

    Permalink

    Returns the result obtained by parsing files from the specified directories and its subdirectories, merging them into a tree with a single root.

    Returns the result obtained by parsing files from the specified directories and its subdirectories, merging them into a tree with a single root.

    roots

    the root directories to traverse

    exclude

    the files to exclude from processing

    codec

    the character encoding of the files, if not specified the platform default will be used.

    Definition Classes
    InputTreeOps
  13. def fromDirectories(roots: Seq[File])(implicit codec: Codec): InputTreeResult

    Permalink

    Returns the result obtained by parsing files from the specified directories and its subdirectories, merging them into a tree with a single root.

    Returns the result obtained by parsing files from the specified directories and its subdirectories, merging them into a tree with a single root.

    roots

    the root directories to traverse

    codec

    the character encoding of the files, if not specified the platform default will be used.

    Definition Classes
    InputTreeOps
  14. def fromDirectory(dir: File, exclude: FileFilter)(implicit codec: Codec): InputTreeResult

    Permalink

    Returns the result obtained by parsing files from the specified directory and its subdirectories.

    Returns the result obtained by parsing files from the specified directory and its subdirectories.

    dir

    the root directory to traverse

    exclude

    the files to exclude from processing

    codec

    the character encoding of the files, if not specified the platform default will be used.

    Definition Classes
    InputTreeOps
  15. def fromDirectory(dir: File)(implicit codec: Codec): InputTreeResult

    Permalink

    Returns the result obtained by parsing files from the specified directory and its subdirectories.

    Returns the result obtained by parsing files from the specified directory and its subdirectories.

    dir

    the root directory to traverse

    codec

    the character encoding of the files, if not specified the platform default will be used.

    Definition Classes
    InputTreeOps
  16. def fromDirectory(name: String, exclude: FileFilter)(implicit codec: Codec): InputTreeResult

    Permalink

    Returns the result obtained by parsing files from the specified directory and its subdirectories.

    Returns the result obtained by parsing files from the specified directory and its subdirectories.

    name

    the name of the directory to traverse

    exclude

    the files to exclude from processing

    codec

    the character encoding of the files, if not specified the platform default will be used.

    Definition Classes
    InputTreeOps
  17. def fromDirectory(name: String)(implicit codec: Codec): InputTreeResult

    Permalink

    Returns the result obtained by parsing files from the specified directory and its subdirectories.

    Returns the result obtained by parsing files from the specified directory and its subdirectories.

    name

    the name of the directory to traverse

    codec

    the character encoding of the files, if not specified the platform default will be used.

    Definition Classes
    InputTreeOps
  18. def fromFile(file: File)(implicit codec: Codec): InputResult

    Permalink

    Returns the result from parsing the specified file.

    Returns the result from parsing the specified file. Any kind of character input is valid, including empty files.

    file

    the file to use as input

    codec

    the character encoding of the file, if not specified the platform default will be used.

    Definition Classes
    InputOps
  19. def fromFile(name: String)(implicit codec: Codec): InputResult

    Permalink

    Returns the result from parsing the file with the specified name.

    Returns the result from parsing the file with the specified name. Any kind of character input is valid, including empty files.

    name

    the name of the file to parse

    codec

    the character encoding of the file, if not specified the platform default will be used.

    Definition Classes
    InputOps
  20. def fromInput(input: Input): InputResult

    Permalink

    Returns the result from parsing the specified input.

    Returns the result from parsing the specified input.

    This is a generic method based on Laika's IO abstraction layer that concrete methods delegate to. Usually not used directly in application code, but might come in handy for very special requirements.

    input

    the input for the parser

    Definition Classes
    TransformInputOps
  21. def fromInputTree(inputTree: InputTree): InputTreeResult

    Permalink

    Returns the result obtained by parsing files from the specified input tree.

    Returns the result obtained by parsing files from the specified input tree.

    inputTree

    the input tree to process

    Definition Classes
    TransformInputTreeOps
  22. def fromInputTree(builder: InputTreeBuilder): InputTreeResult

    Permalink

    Returns the result obtained by parsing files from the specified input tree builder.

    Returns the result obtained by parsing files from the specified input tree builder.

    builder

    a builder for the input tree to process

    Definition Classes
    InputTreeOps
  23. def fromReader(reader: Reader): InputResult

    Permalink

    Returns the result from parsing the input from the specified reader.

    Returns the result from parsing the input from the specified reader.

    Definition Classes
    InputOps
  24. def fromStream(stream: InputStream)(implicit codec: Codec): InputResult

    Permalink

    Returns the result from parsing the input from the specified stream.

    Returns the result from parsing the input from the specified stream.

    stream

    the stream to use as input for the parser

    codec

    the character encoding of the stream, if not specified the platform default will be used.

    Definition Classes
    InputOps
  25. def fromString(str: String): InputResult

    Permalink

    Returns the result from parsing a the specified string.

    Returns the result from parsing a the specified string. Any kind of input is valid, including an empty string.

    Definition Classes
    InputOps
  26. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  27. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  28. def inParallel(parallelism: Int, threshold: Int): ThisType

    Permalink

    Instructs the parser and/or renderer to process all inputs and outputs in parallel, with the specified level of parallelism.

    Instructs the parser and/or renderer to process all inputs and outputs in parallel, with the specified level of parallelism.

    The recursive structure of document trees will be flattened before parsing and rendering and then get reassembled afterwards, therefore the parallel processing includes all subtrees of the document tree.

    The actual transformation is a three phase process, the first (parsing) and third (rendering) can run in parallel. The second phase in the middle cannot, as this is the document tree model rewrite step where things like cross references or table of contents get processed that need access to more than just the current document.

    parallelism

    the number of batches to be executed in parallel, 1 means sequential execution

    threshold

    the minimum number of operations required for parallel execution

    Definition Classes
    OperationConfigBuilder
  29. def inParallel: ThisType

    Permalink

    Instructs the parser and/or renderer to process all inputs and outputs in parallel, with the default level of parallelism which corresponds to the number of CPUs.

    Instructs the parser and/or renderer to process all inputs and outputs in parallel, with the default level of parallelism which corresponds to the number of CPUs.

    The recursive structure of document trees will be flattened before parsing and rendering and then get reassembled afterwards, therefore the parallel processing includes all subtrees of the document tree.

    The actual transformation is a three phase process, the first (parsing) and third (rendering) can run in parallel. The second phase in the middle cannot, as this is the document tree model rewrite step where things like cross references or table of contents get processed that need access to more than just the current document.

    Definition Classes
    OperationConfigBuilder
  30. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  31. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  32. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  33. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  34. def rendering(customRenderer: (Writer) ⇒ RenderFunction): ThisType

    Permalink

    Specifies a custom render function that overrides one or more of the default renderers for the output format this instance uses.

    Specifies a custom render function that overrides one or more of the default renderers for the output format this instance uses.

    This method expects a function that returns a partial function as the result. The outer function allows to capture the writer instance to write to and will only be invoked once. The partial function will then be invoked for each element it is defined at.

    Simple example for customizing the HTML output for emphasized text, adding a specific style class:

    Transform from Markdown to HTML rendering { out =>
      { case Emphasized(content) => out << """<em class="big">""" << content << "</em>" }
    } fromFile "hello.md" toFile "hello.html"
    Definition Classes
    RenderConfigBuilder
  35. def strict: ThisType

    Permalink

    Turns strict mode on for the target parser, switching off any features not part of the original markup syntax.

    Turns strict mode on for the target parser, switching off any features not part of the original markup syntax. This includes the registration of directives (custom tags), custom templates with directives, as well as configuration sections at the start of the document.

    Technically it removes all ExtensionBundle instances which do not have the useInStrictMode flag set to true.

    Definition Classes
    ParseConfigBuilder
  36. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  37. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  38. def unformatted: ThisType

    Permalink

    Renders without any formatting (line breaks or indentation).

    Renders without any formatting (line breaks or indentation). Useful when storing the output in a database for example.

    Definition Classes
    RenderConfigBuilder
  39. def using(bundles: ExtensionBundle*): ThisType

    Permalink

    Returns a new instance with the specified extension bundles installed.

    Returns a new instance with the specified extension bundles installed. Features in the new bundles may override features in already installed bundles.

    Bundles are usually provided by libraries (by Laika itself or a 3rd-party extension library) or as re-usable building blocks by application code.

    Definition Classes
    OperationConfigBuilder
  40. def usingRule(newRule: RewriteRule): ThisType

    Permalink

    Specifies a rewrite rule to be applied to the document tree model between the parse and render operations.

    Specifies a rewrite rule to be applied to the document tree model between the parse and render operations. This is identical to calling Document.rewrite directly, but if there is no need to otherwise access the document instance and just chain parse and render operations this hook is more convenient.

    The rule is a partial function that takes an Element and returns an Option[Element].

    If the function is not defined for a specific element the old element remains in the tree unchanged. If it returns None then the node gets removed from the tree, if it returns an element it will replace the old one. Of course the function may also return the old element.

    The rewriting is performed in a way that only branches of the tree that contain new or removed elements will be replaced. It is processed bottom-up, therefore any element container passed to the rule only contains children which have already been processed.

    In case multiple rewrite rules need to be applied it may be more efficient to first combine them with orElse.

    Definition Classes
    TransformConfigBuilder
  41. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  42. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  43. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  44. def withMessageLevel(level: MessageLevel): ThisType

    Permalink

    Specifies the minimum required level for a system message to get included into the output by this renderer.

    Specifies the minimum required level for a system message to get included into the output by this renderer.

    Definition Classes
    RenderConfigBuilder
  45. def withRawContent: ThisType

    Permalink

    Enables all extensions that process raw content embedded into the host markup language.

    Enables all extensions that process raw content embedded into the host markup language. These are disabled by default as Laika is designed to render to multiple output formats from a single input document. With raw content embedded the markup document is tied to a specific output format.

    Technically it activates all ExtensionBundle instances which have the acceptRawContent flag set to true.

    Definition Classes
    ParseConfigBuilder

Inherited from InputTreeOps

Inherited from InputOps

Inherited from TransformConfigBuilder[Writer]

Inherited from RenderConfigBuilder[Writer]

Inherited from ParseConfigBuilder

Inherited from OperationConfigBuilder

Inherited from AnyRef

Inherited from Any

Ungrouped