Table of Content
- About Laika
- Features
- Supported Platforms
- Supported Formats
- Content Organization
- Library API
- Customizations
- Extensibility
- Design Goals
- Not Tied to External Tools
- Not Tied to the JVM
- Not Tied to sbt
- Not Tied to Markdown
- Not Tied to HTML
- Not Tied to the File System
- Purely Functional
- A Toolkit for Creating Toolkits
- Running Laika
- sbt Plugin
- Adding the Plugin to the Build
- Preparing Content
- Generating a Site
- Including EPUB and PDF
- Including Scaladoc
- Generating Individual Formats
- Using the Preview Server
- Preview of the Document AST
- Plugin Settings
- laikaTheme Setting
- laikaConfig Setting
- laikaExtensions Setting
- Configuring Input and Output
- Freely Composing Inputs
- Settings for the laikaSite task
- laikaPreviewConfig setting
- Installing Additional Renderers
- Inspecting Laika's Configuration
- Library API
- Dependencies
- Anatomy of the API
- Transforming Strings
- Setup for Effectful Transformations
- Using cats-effect
- Applications without Effect Library
- Entire Directories as Input
- Merging Multiple Directories
- Freely Composing Inputs
- Preparing Content
- Separate Parsing and Rendering
- Configuration
- Theme Configuration
- Other Settings
- Using the Preview Server
- Preview of the Document AST
- Configuration
- Theme Settings
- Navigation
- Run Modes
- Strict Mode
- Raw Content
- Character Encoding
- Error Handling
- Error Types
- Default Behaviour
- Visual Debugging
- The AST Renderer
- User-Defined Variables
- Preparing Content
- Directory Structure
- Document Types
- Markup Files
- Title Documents
- Configuration Files
- Template Files
- Static Files
- Auto-Generated Navigation
- Configuration for Directories
- Directory Title
- Navigation Order
- Limiting the Output Formats
- Disabling Link Validation
- Versioned Documentation
- Configuration
- Index for Smart Version Switcher
- Re-Rendering Older Versions
- Virtual Tree Abstraction
- Navigation
- Validated Internal Links
- Disabling Validation
- Global Link Definitions
- External Links
- Linking by Section Headline
- Resolving Ambiguity
- Linking to API Documentation
- Linking to Source Code
- Generating Navigation Trees
- Websites
- EPUB & PDF
- The navigationTree Directive
- Breadcrumbs
- Auto-Numbering
- Pretty URLs
- Custom Link Directives
- Theme Settings
- The Helium Theme
- Helium Configuration API
- Fonts
- Colors
- Theme Colors
- Syntax Highlighting
- Dark Mode
- Layout
- Metadata
- Metadata for Individual Documents
- Navigation, Links, Favicons & Footer
- Main Navigation
- Top Navigation Bar
- Page Navigation
- Table of Contents
- Favicons
- Footer
- Download Page
- Website Landing Page
- Cover Images for E-books
- Auto-Linking CSS & JS Files
- Conditional Inclusions
- Setting Common Tag Attributes
- Mermaid Diagrams
- Custom Templates
- Customizing Template Fragments
- E-Books (EPUB & PDF)
- Generating E-Books
- Directory Structure
- Configuration
- Book Navigation
- Supported Document Types
- CSS for EPUB
- JavaScript for EPUB
- CSS for PDF
- Customized Output
- Templates
- Overriding Renderers
- Syntax Highlighting
- Configuration
- Supported Languages
- Styling
- Integrating External Tools
- Adding Your Own Highlighters
- Customizing Laika
- Customizing Laika - Overview
- Transformation Phases
- Customization Options
- Creating Templates
- Document Names and Locations
- Default Templates
- Overrides per Directory
- Overrides per Document
- Overriding Template Fragments in the Helium Theme
- Template Syntax
- Inserting Content from Markup Documents
- Main Document Body
- Document Fragments
- Substitution Variables
- Directives
- Internal Representation
- The Document AST
- Trait Hierarchy
- Base Traits
- Containers
- Special Types
- Container Elements
- Lists
- Block Containers
- Links and References
- Span Containers
- Text Containers
- Other Elements
- Block Elements
- Span Elements
- Template Spans
- AST Element Companions
- Document Trees
- The Document Type
- The DocumentTree Type
- Cursors
- AST Transformation Phases
- AST Rewriting
- How Rewrite Rules Work
- Applying a Rewrite Rule
- Using the sbt Plugin
- Using the Transformer API
- Working with the Tree Model
- Effectful AST Transformations
- Overriding Renderers
- Function Signature
- Defining a Render Function
- Registering a Render Function
- The Formatter APIs
- Formatter
- TagFormatter
- Extending Laika
- Extending Laika - Overview
- Transformation Phases
- The ExtensionBundle API
- The Theme API
- Extending Markup Syntax
- Additional Syntax Highlighters
- Additional Markup or Output Formats
- Customization Hooks
- Replacing Internal Parsers
- Creating Themes
- Common Use Cases
- Adjusting Colors, Fonts and Layout
- Customizing Theme Templates
- Creating Theme Extensions
- A Single Project without Helium
- Creating Reusable Themes
- Theme Functionality
- Implementing Themes
- Creating a
ThemeProvider
- Using a Custom Theme
- The
ThemeBuilder
API - Templates
- Generating Variables for Templates
- CSS
- Fonts
- Designing a Configuration API
- Publishing Themes
- Implementing Directives
- Anatomy of a Directive
- Directive Types
- Directives Provided by Laika
- Sample Directive
- Directive Implementation
- Directive Registration
- Access to Configuration
- Directive Attributes
- Positional Attributes
- Named Attributes (HOCON)
- Optional Attributes
- Type Conversions
- Inheritance
- Directive Body
- Access to the Parser
- Access to the Document Cursor
- Link Directives
- Separator Directives
- Writing Parser Extensions
- Multi-Pass Markup Parsing
- Prerequisites
- Span Parsers
- Span Parser Implementation
- Registering a Span Parser
- Access to Configuration
- Detecting Markup Boundaries
- Recursive Parsing
- Block Parsers
- Block Parser Implementation
- Registering a Block Parser
- Base Parsers for Block Elements
- Precedence
- Internal Design & Performance
- Adding Syntax Highlighters
- Design Goals
- Prerequisites
- The SyntaxHighlighter Trait
- Using Existing Building Blocks
- String Literals
- Character Literals
- Numeric Literals
- Identifiers
- Keywords
- Comments
- Defining Custom Parsers
- Embedding other Languages
- Parser Precedence
- Registering a Highlighter
- New Markup or Output Formats
- Implementing a Markup Format
- Parser Prerequisites
- The MarkupFormat Trait
- Parser Precedence
- Implementing a Render Format
- Renderer Prerequisites
- The RenderFormat Trait
- The Render Function
- Choosing a Formatter API
- Costs of Avoiding Side Effects
- Sub-Modules
- Laika's Parser Combinators
- The Parser Trait
- Parsing Text
- Literal Text
- Character Groups
- Length Constraints
- Combinators
- Concatenation
- Alternatives
- Repetitions
- Producing Results
- Delimiters
- Parsing Nested Spans
- Performance Optimizations
- Inline Parsing Challenges
- The PrefixedParser trait
- Laika's HOCON API
- Why Laika Uses HOCON
- Problems with Configuration Files
- Laika's Use Case for HOCON
- Why a New Parser?
- Where Laika Uses HOCON
- Reading from Config Instances
- Creating Decoders and Encoders
- ConfigDecoder
- ConfigEncoder
- Automatic Derivation
- Creating a Config Instance
- Programmatic Building
- Parsing HOCON
- Reference
- Standard Directives
- Navigation
@:navigationTree
@:breadcrumb
@:api
@:source
@:target
- Inclusions
@:include
@:embed
- Styles & Themes
@:style
@:icon
- Markup Blocks
@:image
@:callout
@:select
@:fragment
@:format
- HTML Templates
@:attribute
@:date
- Conditionals and Loops
@:for
@:if
- PDF Output
@:pageBreak
- Comments
@:todo
- Substitution Variables
- Syntax
- Pre-Defined Values
- Cursor Values
- Laika Configuration Values
- User-Defined Values
- Programmatic Definition
- HOCON Definition
- Programmatic Access
- Spec Compliance
- Markdown
- Test Suite
- Verbatim HTML
- GitHub Flavored Markdown
- CommonMark
- reStructuredText
- Supported Standard Directives
- Supported Standard Text Roles
- Unsupported Extensions
- Raw Content Extensions
- Implementing a Custom Directive
- HOCON
- Migration Guide
- New Organization ID
- Changed Behaviour for Including CSS/JS
- Breaking API Changes
- New package structure
- Reduced public API surface
- Many case classes became regular classes
- Simplified Formatter APIs
- Removal of all deprecated APIs