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



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

def bibpaper(id)
  bibpaper_index[id]
end

#bibpaper_indexObject

Raises:



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

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



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

def column(id)
  column_index[id]
end

#column_indexObject



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

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



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

def equation(id)
  equation_index[id]
end

#equation_indexObject



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

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

#footnote(id) ⇒ Object



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

def footnote(id)
  footnote_index[id]
end

#footnote_indexObject



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

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

#headline(caption) ⇒ Object



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

def headline(caption)
  headline_index[caption]
end

#headline_indexObject



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

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

#icon_indexObject



120
121
122
123
124
125
# File 'lib/review/book/compilable.rb', line 120

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

#image(id) ⇒ Object



99
100
101
102
103
104
# File 'lib/review/book/compilable.rb', line 99

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)


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

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

#image_indexObject



113
114
115
116
117
118
# File 'lib/review/book/compilable.rb', line 113

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

#indepimage_indexObject



127
128
129
130
131
132
# File 'lib/review/book/compilable.rb', line 127

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

#linesObject



58
59
60
61
# File 'lib/review/book/compilable.rb', line 58

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

#list(id) ⇒ Object



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

def list(id)
  list_index[id]
end

#list_indexObject



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

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



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

def next_chapter
  book.next_chapter(self)
end

#numberless_image_indexObject



106
107
108
109
110
111
# File 'lib/review/book/compilable.rb', line 106

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

#prev_chapterObject



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

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



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

def table(id)
  table_index[id]
end

#table_indexObject



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

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
# File 'lib/review/book/compilable.rb', line 54

def volume
  @volume ||= Volume.count_file(path)
end