Class: NoraMark::Html::Pages

Inherits:
Object
  • Object
show all
Defined in:
lib/nora_mark/html/pages.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sequence_format = '%05d') ⇒ Pages

Returns a new instance of Pages.



7
8
9
10
# File 'lib/nora_mark/html/pages.rb', line 7

def initialize(sequence_format = '%05d')
  @sequence_format = sequence_format || '%05d'
  @result = []
end

Instance Attribute Details

#created_filesObject (readonly)

Returns the value of attribute created_files.



5
6
7
# File 'lib/nora_mark/html/pages.rb', line 5

def created_files
  @created_files
end

#file_basenameObject

Returns the value of attribute file_basename.



6
7
8
# File 'lib/nora_mark/html/pages.rb', line 6

def file_basename
  @file_basename
end

Instance Method Details

#<<(page) ⇒ Object



20
21
22
23
# File 'lib/nora_mark/html/pages.rb', line 20

def <<(page)
  seq = @result.size + 1
  @result << { content: page, filename: filename_for_page(seq) }
end

#[](num) ⇒ Object



25
26
27
28
# File 'lib/nora_mark/html/pages.rb', line 25

def [](num)
  page = @result[num]
  page.nil? ? nil : page[:content]
end

#filename_for_page(n) ⇒ Object



34
35
36
# File 'lib/nora_mark/html/pages.rb', line 34

def filename_for_page n
  "#{@file_basename}_#{@sequence_format % (n)}.xhtml"
end

#lastObject



12
13
14
# File 'lib/nora_mark/html/pages.rb', line 12

def last
  @result.last[:content]
end

#pagesObject



30
31
32
# File 'lib/nora_mark/html/pages.rb', line 30

def pages
  @result
end

#set_toc(toc_data) ⇒ Object



38
39
40
41
42
43
# File 'lib/nora_mark/html/pages.rb', line 38

def set_toc toc_data
  @toc = toc_data.map do |toc_line|
    fi = toc_line[:id] ? "##{toc_line[:id]}" : ''
    { link: "#{filename_for_page(toc_line[:page])}#{fi}", level: toc_line[:level], text: toc_line[:text] }
  end
end

#sizeObject



16
17
18
# File 'lib/nora_mark/html/pages.rb', line 16

def size
  @result.size
end

#tocObject



45
46
47
# File 'lib/nora_mark/html/pages.rb', line 45

def toc
  @toc
end

#write_as_files(directory: nil) ⇒ Object



49
50
51
52
53
54
55
56
57
58
# File 'lib/nora_mark/html/pages.rb', line 49

def write_as_files(directory: nil)
  dir = directory || Dir.pwd
  Dir.chdir(dir) do
    @result.each do |page|
      File.open(page[:filename], 'w+') do |file|
        file << page[:content]
      end
    end
  end
end

#write_toc_as_file(directory: nil) ⇒ Object



60
61
62
63
64
65
66
67
68
69
# File 'lib/nora_mark/html/pages.rb', line 60

def write_toc_as_file(directory: nil)
  return if @toc.nil?

  dir = directory || Dir.pwd
  Dir.chdir(dir) do
    File.open("#{@file_basename}.yaml", 'w+') do |file|
      file << YAML.dump(@toc)
    end
  end
end