class BookLab::Toc::Content

Attributes

items[RW]

Public Class Methods

new(items) click to toggle source
# File lib/booklab/toc/content.rb, line 52
def initialize(items)
  @items = items
end

Public Instance Methods

_dump() click to toggle source
# File lib/booklab/toc/content.rb, line 10
def _dump
  YAML.dump(items.as_json)
end
_render(format: :html, prefix: nil, suffix: nil) click to toggle source
# File lib/booklab/toc/content.rb, line 30
def _render(format: :html, prefix: nil, suffix: nil)
  render_items = []
  items.each do |item|
    new_item = item.dup

    new_item.slug = new_item.url
    if new_item.url && !new_item.slug.include?("/")
      new_item.url = "#{prefix.to_s}#{new_item.slug}#{suffix.to_s}"
    end
    render_items << new_item
  end

  ApplicationController.renderer.render(partial: "booklab/toc/content", locals: {
    format: format,
    items: render_items,
  })
end
find_by_url(url) click to toggle source
# File lib/booklab/toc/content.rb, line 48
def find_by_url(url)
  items.find { |item| item.url&.strip == url&.strip }
end
to_html(prefix: nil, suffix: nil) click to toggle source
# File lib/booklab/toc/content.rb, line 18
def to_html(prefix: nil, suffix: nil)
  _render(format: :html, prefix: prefix, suffix: suffix)
end
to_json() click to toggle source
# File lib/booklab/toc/content.rb, line 26
def to_json
  items.to_json
end
to_markdown(prefix: nil, suffix: nil) click to toggle source
# File lib/booklab/toc/content.rb, line 22
def to_markdown(prefix: nil, suffix: nil)
  _render(format: :markdown, prefix: prefix, suffix: suffix)
end
to_yaml() click to toggle source
# File lib/booklab/toc/content.rb, line 14
def to_yaml
  _dump
end