Class: Coradoc::CoreModel::TocGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/coradoc/core_model/toc_generator.rb

Overview

Table of Contents Generator for CoreModel documents

Generates a Toc model from CoreModel::StructuralElement documents. Supports configurable level ranges and section numbering.

Examples:

Basic usage

doc = Coradoc::CoreModel::StructuralElement.new(
  element_type: 'document',
  children: [section1, section2]
)
toc = CoreModel::TocGenerator.generate(doc)

With options

toc = CoreModel::TocGenerator.generate(doc,
  min_level: 2,
  max_level: 4,
  numbered: true
)

Constant Summary collapse

DEFAULT_OPTIONS =

Default options for TOC generation

{
  min_level: 1,
  max_level: 6,
  numbered: false,
  styled: false
}.freeze

Class Method Summary collapse

Class Method Details

.generate(document, options = {}) ⇒ CoreModel::Toc?

Generate a Toc from a CoreModel document

Parameters:

Options Hash (options):

  • :min_level (Integer) — default: 1

    Minimum heading level

  • :max_level (Integer) — default: 6

    Maximum heading level

  • :numbered (Boolean) — default: false

    Add section numbers

  • :styled (Boolean) — default: false

    Add styling

Returns:



43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/coradoc/core_model/toc_generator.rb', line 43

def generate(document, options = {})
  opts = DEFAULT_OPTIONS.merge(options)
  entries = extract_toc_entries(document, opts)

  return nil if entries.empty?

  CoreModel::Toc.new(
    entries: entries,
    min_level: opts[:min_level],
    max_level: opts[:max_level],
    numbered: opts[:numbered],
    styled: opts[:styled]
  )
end