Module: BookLab::Toc

Extended by:
ActiveSupport::Autoload
Defined in:
lib/booklab-toc.rb,
lib/booklab/toc/engine.rb,
lib/booklab/toc/content.rb,
lib/booklab/toc/version.rb,
lib/booklab/toc/list_item.rb,
lib/booklab/toc/format/markdown.rb

Defined Under Namespace

Modules: Format Classes: Content, Engine, FormatError, ListItem

Constant Summary collapse

VERSION =
'0.3.1'

Class Method Summary collapse

Class Method Details

.parse(raw, format: :yml, strict: false) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/booklab-toc.rb', line 15

def parse(raw, format: :yml, strict: false)
  items = []
  datas = []

  case format
  when :yml
    datas = YAML.load(raw)
  when :json
    datas = JSON.load(raw)
  when :markdown
    datas = Format::Markdown.load(raw)
  else
    raise "format: #{format} not implement"
  end

  datas.each do |obj|
    item_hash = obj.to_hash
    item_hash.deep_symbolize_keys!
    items << ListItem.new(id: item_hash[:id], title: item_hash[:title], url: item_hash[:url], depth: item_hash[:depth])
  end
  Content.new(items)
rescue => e
  raise FormatError.new(e.message) if strict
  logger.warn "BookLab::Toc.parse error:\n#{e.inspect}"
  Content.new([])
end