Class: Vivlio::Starter::CLI::TocCommands::TocDocumentBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/vivlio/starter/cli/toc.rb

Overview

TOC の Markdown ドキュメントを構築する

Defined Under Namespace

Classes: ListState

Constant Summary collapse

FRONT_MATTER =
<<~MD
  ---
  link:
    - rel: "stylesheet"
      href: "stylesheets/toc.css"
  lang: 'ja'
  ---

  # 目次
  <nav id="toc" role="doc-toc">
  <ul>
MD

Instance Method Summary collapse

Constructor Details

#initialize(entry_map, base_dir:) ⇒ TocDocumentBuilder

Returns a new instance of TocDocumentBuilder.

Parameters:

  • entry_map (Hash{String => TokenResolver::Entry})

    HTML パス => Entry のマップ

  • base_dir (Pathname)

    ベースディレクトリ



144
145
146
147
148
# File 'lib/vivlio/starter/cli/toc.rb', line 144

def initialize(entry_map, base_dir:)
  @entry_map = entry_map
  @targets = entry_map.keys.sort
  @base_dir = Pathname.new(base_dir)
end

Instance Method Details

#buildObject

TOC の Markdown 文字列を構築する



151
152
153
154
155
156
157
158
# File 'lib/vivlio/starter/cli/toc.rb', line 151

def build
  buffer = [FRONT_MATTER.dup]
  append_preface(buffer)
  append_headings(buffer)
  append_postface(buffer)
  buffer << "</ul>\n</nav>"
  buffer.join
end