Module: MiddlemanToc

Defined in:
lib/middleman_toc.rb,
lib/middleman_toc/tag.rb,
lib/middleman_toc/toc.rb,
lib/middleman_toc/node.rb,
lib/middleman_toc/title.rb,
lib/middleman_toc/builder.rb,
lib/middleman_toc/helpers.rb,
lib/middleman_toc/version.rb,
lib/middleman_toc/renderer.rb,
lib/middleman_toc/extension.rb,
lib/middleman_toc/validator.rb

Defined Under Namespace

Modules: Helpers Classes: Builder, Extension, Node, Page, Renderer, Tag, Title, Toc, Validator

Constant Summary collapse

VERSION =
"0.0.7"

Class Method Summary collapse

Class Method Details

.all_pages(sitemap) ⇒ Object



25
26
27
28
29
30
31
32
33
# File 'lib/middleman_toc.rb', line 25

def all_pages(sitemap)
  rendering do
    instance(sitemap).nodes.inject([]) do |result, node|
      page = pages(sitemap)[node.path]
      result << Page.new(page, node.title) if page
      result
    end
  end
end

.instance(sitemap) ⇒ Object



15
16
17
18
19
# File 'lib/middleman_toc.rb', line 15

def instance(sitemap)
  @instance ||= Toc.new(pages(sitemap)).tap do |toc|
    Validator.new(toc.pages, toc.root).validate!
  end
end

.next_page(sitemap, path) ⇒ Object



39
40
41
# File 'lib/middleman_toc.rb', line 39

def next_page(sitemap, path)
  rendering { instance(sitemap).next_page(path) }
end

.pages(sitemap) ⇒ Object



43
44
45
46
47
# File 'lib/middleman_toc.rb', line 43

def pages(sitemap)
  @pages ||= sitemap.resources.inject({}) do |pages, page|
    pages.merge(page.path.gsub(%r((^|\/)[\d]+\-), '').sub('.html', '\1') => page)
  end
end

.prev_page(sitemap, path) ⇒ Object



35
36
37
# File 'lib/middleman_toc.rb', line 35

def prev_page(sitemap, path)
  rendering { instance(sitemap).prev_page(path) }
end

.renderingObject



49
50
51
52
53
# File 'lib/middleman_toc.rb', line 49

def rendering
  return if @rendering
  @rendering = true
  yield.tap { @rendering = false }
end

.toc(sitemap, path) ⇒ Object



21
22
23
# File 'lib/middleman_toc.rb', line 21

def toc(sitemap, path)
  rendering { instance(sitemap).toc(path) } # .tap { |html| puts html }
end