Module: ReVIEW::Book::Compilable

Includes:
TextUtils
Included in:
Chapter, Part
Defined in:
lib/review/book/compilable.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from TextUtils

#add_space?, #defer_math_image, #detab, #join_lines_to_paragraph, #split_paragraph

Instance Attribute Details

#bookObject (readonly)

Returns the value of attribute book.



15
16
17
# File 'lib/review/book/compilable.rb', line 15

def book
  @book
end

#contentObject

Returns the value of attribute content.



17
18
19
# File 'lib/review/book/compilable.rb', line 17

def content
  @content
end

#pathObject (readonly)

Returns the value of attribute path.



16
17
18
# File 'lib/review/book/compilable.rb', line 16

def path
  @path
end

Instance Method Details

#basenameObject



24
25
26
27
# File 'lib/review/book/compilable.rb', line 24

def basename
  return nil unless @path
  File.basename(@path)
end

#bibpaper(id) ⇒ Object



138
139
140
# File 'lib/review/book/compilable.rb', line 138

def bibpaper(id)
  bibpaper_index[id]
end

#bibpaper_indexObject

Raises:



142
143
144
145
146
# File 'lib/review/book/compilable.rb', line 142

def bibpaper_index
  raise FileNotFound, "no such bib file: #{@book.bib_file}" unless @book.bib_exist?
  @bibpaper_index ||= BibpaperIndex.parse(@book.read_bib.lines.to_a)
  @bibpaper_index
end

#column(id) ⇒ Object



156
157
158
# File 'lib/review/book/compilable.rb', line 156

def column(id)
  column_index[id]
end

#column_indexObject



160
161
162
# File 'lib/review/book/compilable.rb', line 160

def column_index
  @column_index ||= ColumnIndex.parse(lines)
end

#dirnameObject



19
20
21
22
# File 'lib/review/book/compilable.rb', line 19

def dirname
  return nil unless @path
  File.dirname(@path)
end

#equation(id) ⇒ Object



85
86
87
# File 'lib/review/book/compilable.rb', line 85

def equation(id)
  equation_index[id]
end

#equation_indexObject



89
90
91
92
# File 'lib/review/book/compilable.rb', line 89

def equation_index
  @equation_index ||= EquationIndex.parse(lines)
  @equation_index
end

#footnote(id) ⇒ Object



94
95
96
# File 'lib/review/book/compilable.rb', line 94

def footnote(id)
  footnote_index[id]
end

#footnote_indexObject



98
99
100
101
# File 'lib/review/book/compilable.rb', line 98

def footnote_index
  @footnote_index ||= FootnoteIndex.parse(lines)
  @footnote_index
end

#headline(caption) ⇒ Object



148
149
150
# File 'lib/review/book/compilable.rb', line 148

def headline(caption)
  headline_index[caption]
end

#headline_indexObject



152
153
154
# File 'lib/review/book/compilable.rb', line 152

def headline_index
  @headline_index ||= HeadlineIndex.parse(lines, self)
end

#icon_indexObject



124
125
126
127
128
129
# File 'lib/review/book/compilable.rb', line 124

def icon_index
  @icon_index ||= IconIndex.parse(lines, id,
                                  @book.imagedir,
                                  @book.image_types, @book.config['builder'])
  @icon_index
end

#image(id) ⇒ Object



103
104
105
106
107
108
# File 'lib/review/book/compilable.rb', line 103

def image(id)
  return image_index[id] if image_index.key?(id)
  return icon_index[id] if icon_index.key?(id)
  return numberless_image_index[id] if numberless_image_index.key?(id)
  indepimage_index[id]
end

#image_bound?(item_id) ⇒ Boolean

Returns:

  • (Boolean)


172
173
174
175
# File 'lib/review/book/compilable.rb', line 172

def image_bound?(item_id)
  item = self.image(item_id)
  item.path
end

#image_indexObject



117
118
119
120
121
122
# File 'lib/review/book/compilable.rb', line 117

def image_index
  @image_index ||= ImageIndex.parse(lines, id,
                                    @book.imagedir,
                                    @book.image_types, @book.config['builder'])
  @image_index
end

#indepimage_indexObject



131
132
133
134
135
136
# File 'lib/review/book/compilable.rb', line 131

def indepimage_index
  @indepimage_index ||=
    IndepImageIndex.parse(lines, id,
                          @book.imagedir,
                          @book.image_types, @book.config['builder'])
end

#linesObject



62
63
64
65
# File 'lib/review/book/compilable.rb', line 62

def lines
  # FIXME: we cannot duplicate Enumerator on ruby 1.9 HEAD
  (@lines ||= content.lines.to_a).dup
end

#list(id) ⇒ Object



67
68
69
# File 'lib/review/book/compilable.rb', line 67

def list(id)
  list_index[id]
end

#list_indexObject



71
72
73
74
# File 'lib/review/book/compilable.rb', line 71

def list_index
  @list_index ||= ListIndex.parse(lines)
  @list_index
end

#nameObject Also known as: id



29
30
31
32
# File 'lib/review/book/compilable.rb', line 29

def name
  return nil unless @name
  File.basename(@name, '.*')
end

#next_chapterObject



164
165
166
# File 'lib/review/book/compilable.rb', line 164

def next_chapter
  book.next_chapter(self)
end

#numberless_image_indexObject



110
111
112
113
114
115
# File 'lib/review/book/compilable.rb', line 110

def numberless_image_index
  @numberless_image_index ||=
    NumberlessImageIndex.parse(lines, id,
                               @book.imagedir,
                               @book.image_types, @book.config['builder'])
end

#prev_chapterObject



168
169
170
# File 'lib/review/book/compilable.rb', line 168

def prev_chapter
  book.prev_chapter(self)
end

#sizeObject



50
51
52
# File 'lib/review/book/compilable.rb', line 50

def size
  content.size
end

#table(id) ⇒ Object



76
77
78
# File 'lib/review/book/compilable.rb', line 76

def table(id)
  table_index[id]
end

#table_indexObject



80
81
82
83
# File 'lib/review/book/compilable.rb', line 80

def table_index
  @table_index ||= TableIndex.parse(lines)
  @table_index
end

#titleObject



36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/review/book/compilable.rb', line 36

def title
  return @title if @title

  @title = ''
  return @title unless content
  content.each_line do |line|
    if line =~ /\A=+/
      @title = line.sub(/\A=+(\[.+?\])?(\{.+?\})?/, '').strip
      break
    end
  end
  @title
end

#volumeObject



54
55
56
57
58
59
60
# File 'lib/review/book/compilable.rb', line 54

def volume
  unless @volume
    @volume = Volume.count_file(path)
    @volume.page_per_kbyte = @book.page_metric.page_per_kbyte
  end
  @volume
end