Packages

o

laika.io

implicits

object implicits

Implicits that add an io method to all builder instances for parsers, renderers and transformers from the laika-core module, adding support for file/stream IO, suspended in the effect of your choice.

The requirements for the effect are Async and ContextShift for sequential execution, and additionally cats.Parallel for parallel execution.

Example for transforming a file from Markdown to HTML using the sequential builder:

implicit val cs: ContextShift[IO] =
  IO.contextShift(ExecutionContext.global)

val blocker = Blocker.liftExecutionContext(
  ExecutionContext.fromExecutor(Executors.newCachedThreadPool())
)

val transformer = Transformer
  .from(Markdown)
  .to(HTML)
  .using(GitHubFlavor)
  .io(blocker)
  .sequential[IO]
  .build

val res: IO[Unit] = transformer
  .fromFile("hello.md")
  .toFile("hello.html")
  .transform

Example for transforming an entire directory from Markdown to HTML using the parallel builder:

implicit val cs: ContextShift[IO] =
  IO.contextShift(ExecutionContext.global)

val blocker = Blocker.liftExecutionContext(
  ExecutionContext.fromExecutor(Executors.newCachedThreadPool())
)

val transformer = Transformer
  .from(Markdown)
  .to(HTML)
  .using(GitHubFlavor)
  .io(blocker)
  .parallel[IO](4)
  .build

val res: IO[Unit] = transformer
  .fromDirectory("src")
  .toDirectory("target")
  .transform

The parallel variants of parser, renderer and transformer are the most powerful of the library, and the only options that support templating, style sheets and the copying of static files from input to output directory.

This API can be used to produce an entire HTML site or e-books in the EPUB or PDF format. It is also the basis of all tasks in the sbt plugin, that only adds a thin layer of sbt tasks and settings on top of the library API.

The tree for all internal processing steps is based on a virtual path, where in case of directory input and output the root of the virtual tree is mapped to the directory. This abstraction allows the merging of multiple input directories or the addition of inputs constructed in memory to those obtained from the file system.

In the case of binary output like EPUB or PDF, the document tree will be rendered to a single, merged output. In case of HTML the output is a tree of separate HTML documents. The API adjusts to the format in use, e.g. EPUB and PDF transformers will offer a fromDirectory ... toFile flow whereas HTML will offer fromDirectory ... toDirectory.

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. implicits
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. implicit final class ImplicitBinaryRendererOps extends AnyVal
  2. implicit final class ImplicitBinaryTransformerOps extends AnyVal
  3. implicit final class ImplicitParserOps extends AnyVal
  4. implicit final class ImplicitTextRendererOps extends AnyVal
  5. implicit final class ImplicitTextTransformerOps extends AnyVal

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  12. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  13. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  14. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  15. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  16. def toString(): String
    Definition Classes
    AnyRef → Any
  17. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  18. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()

Inherited from AnyRef

Inherited from Any

Ungrouped