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

#detab, #split_paragraph

Instance Attribute Details

#bookObject (readonly)

Returns the value of attribute book.



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

def book
  @book
end

#contentObject



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

def content
  @content = File.read(path())
rescue
  @content
end

#pathObject (readonly)

Returns the value of attribute path.



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

def path
  @path
end

Instance Method Details

#basenameObject



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

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

#bibpaper(id) ⇒ Object



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

def bibpaper(id)
  bibpaper_index()[id]
end

#bibpaper_indexObject

Raises:



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

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



166
167
168
# File 'lib/review/book/compilable.rb', line 166

def column(id)
  column_index()[id]
end

#column_indexObject



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

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

#dirnameObject



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

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

#envObject



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

def env
  @book
end

#footnote(id) ⇒ Object



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

def footnote(id)
  footnote_index()[id]
end

#footnote_indexObject



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

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

#headline(caption) ⇒ Object



158
159
160
# File 'lib/review/book/compilable.rb', line 158

def headline(caption)
  headline_index()[caption]
end

#headline_indexObject



162
163
164
# File 'lib/review/book/compilable.rb', line 162

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

#icon_indexObject



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

def icon_index
  @icon_index ||= IconIndex.parse(lines(), id(),
    "#{book.basedir}/#{@book.image_dir}",
    @book.image_types, @book.config['builder'])
  @icon_index
end

#image(id) ⇒ Object



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

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

#image_indexObject



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

def image_index
  @image_index ||= ImageIndex.parse(lines(), id(),
    "#{book.basedir}/#{@book.image_dir}",
    @book.image_types, @book.config['builder'])
  @image_index
end

#indepimage_indexObject



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

def indepimage_index
  @indepimage_index ||=
    IndepImageIndex.parse(lines(), id(),
    "#{book.basedir}/#{@book.image_dir}",
    @book.image_types, @book.config['builder'])
end

#linesObject



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

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

#list(id) ⇒ Object



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

def list(id)
  list_index()[id]
end

#list_indexObject



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

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

#nameObject Also known as: id



34
35
36
37
# File 'lib/review/book/compilable.rb', line 34

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

#next_chapterObject



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

def next_chapter
  book.next_chapter(self)
end

#numberless_image_indexObject



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

def numberless_image_index
  @numberless_image_index ||=
    NumberlessImageIndex.parse(lines(), id(),
    "#{book.basedir}/#{@book.image_dir}",
    @book.image_types, @book.config['builder'])
end

#open(&block) ⇒ Object



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

def open(&block)
  return (block_given?() ? yield(@io) : @io) if @io
  File.open(path(), &block)
end

#prev_chapterObject



178
179
180
# File 'lib/review/book/compilable.rb', line 178

def prev_chapter
  book.prev_chapter(self)
end

#sizeObject



56
57
58
# File 'lib/review/book/compilable.rb', line 56

def size
  File.size(path())
end

#table(id) ⇒ Object



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

def table(id)
  table_index()[id]
end

#table_indexObject



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

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

#titleObject



41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/review/book/compilable.rb', line 41

def title
  return @title if @title

  @title = ''
  open {|f|
    f.each_line {|l|
      if l =~ /\A=+/
        @title = l.sub(/\A=+(\[.+?\])?(\{.+?\})?/, '').strip
        break
      end
    }
  }
  @title
end

#volumeObject



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

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