Class: ReVIEW::Book::Base

Inherits:
Object show all
Extended by:
Forwardable
Includes:
TOCRoot
Defined in:
lib/review/tocparser.rb,
lib/review/book/base.rb

Overview

reopen

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from TOCRoot

#chapter?, #each_section, #each_section_with_index, #estimated_lines, #level, #n_sections

Constructor Details

#initialize(basedir, parameters = Parameters.default) ⇒ Base

Returns a new instance of Base.



49
50
51
52
53
54
# File 'lib/review/book/base.rb', line 49

def initialize(basedir, parameters = Parameters.default)
  @basedir = basedir
  @parameters = parameters
  @parts = nil
  @chapter_index = nil
end

Instance Attribute Details

#paramObject

Returns the value of attribute param.



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

def param
  @param
end

Class Method Details

.load(dir) ⇒ Object



31
32
33
34
# File 'lib/review/book/base.rb', line 31

def self.load(dir)
  update_rubyenv dir
  new(dir)
end

.load_defaultObject



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/review/book/base.rb', line 18

def self.load_default
  %w( . .. ../.. ).each do |basedir|
    if File.file?("#{basedir}/CHAPS")
      book = load(basedir)
      if File.file?("#{basedir}/config.rb")
        book.instance_variable_set("@parameters", Parameters.load("#{basedir}/config.rb"))
      end
      return book
    end
  end
  new('.')
end

.update_rubyenv(dir) ⇒ Object



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

def self.update_rubyenv(dir)
  return if @basedir_seen.key?(dir)
  if File.directory?("#{dir}/lib/review")
    $LOAD_PATH.unshift "#{dir}/lib"
  end
  if File.file?("#{dir}/review-ext.rb")
    Kernel.load File.expand_path("#{dir}/review-ext.rb")
  end
  @basedir_seen[dir] = true
end

Instance Method Details

#basedirObject



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

def basedir
  @basedir
end

#bib_exist?Boolean

Returns:

  • (Boolean)


130
131
132
# File 'lib/review/book/base.rb', line 130

def bib_exist?
  File.exist?("#{@basedir}/#{bib_file}")
end

#chapter(id) ⇒ Object



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

def chapter(id)
  chapter_index()[id]
end

#chapter_indexObject



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

def chapter_index
  @chapter_index ||= ChapterIndex.new(chapters())
  @chapter_index
end

#chaptersObject



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

def chapters
  parts().map {|p| p.chapters }.flatten
end

#each_chapter(&block) ⇒ Object



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

def each_chapter(&block)
  chapters.each(&block)
end

#each_part(&block) ⇒ Object



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

def each_part(&block)
  parts.each(&block)
end

#part(n) ⇒ Object



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

def part(n)
  parts.detect {|part| part.number == n }
end

#part_exist?Boolean

Returns:

  • (Boolean)


122
123
124
# File 'lib/review/book/base.rb', line 122

def part_exist?
  File.exist?("#{@basedir}/#{part_file}")
end

#partsObject



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

def parts
  @parts ||= read_parts()
end

#parts_in_fileObject



73
74
75
# File 'lib/review/book/base.rb', line 73

def parts_in_file
  parts.find_all{|part| part if part.file? }
end

#postscriptsObject



146
147
148
149
150
151
152
153
154
155
156
# File 'lib/review/book/base.rb', line 146

def postscripts
  if File.file?("#{@basedir}/#{postdef_file}")
    begin
      return mkpart_from_namelistfile("#{@basedir}/#{postdef_file}")
    rescue FileNotFound => err
      raise FileNotFound, "postscript #{err.message}"
    end
  else
    mkpart_from_namelist(%w(appendix postscript))
  end
end

#prefacesObject



134
135
136
137
138
139
140
141
142
143
144
# File 'lib/review/book/base.rb', line 134

def prefaces
  if File.file?("#{@basedir}/#{predef_file}")
    begin
      return mkpart_from_namelistfile("#{@basedir}/#{predef_file}")
    rescue FileNotFound => err
      raise FileNotFound, "preface #{err.message}"
    end
  else
    mkpart_from_namelist(%w(preface))
  end
end

#read_bibObject



126
127
128
# File 'lib/review/book/base.rb', line 126

def read_bib
  File.read("#{@basedir}/#{bib_file}")
end

#read_CHAPSObject



106
107
108
# File 'lib/review/book/base.rb', line 106

def read_CHAPS
  read_FILE("chapter_file")
end

#read_PARTObject



118
119
120
# File 'lib/review/book/base.rb', line 118

def read_PART
  @read_PART ||= File.read("#{@basedir}/#{part_file}")
end

#read_POSTDEFObject



114
115
116
# File 'lib/review/book/base.rb', line 114

def read_POSTDEF
  read_FILE("postdef_file")
end

#read_PREDEFObject



110
111
112
# File 'lib/review/book/base.rb', line 110

def read_PREDEF
  read_FILE("predef_file")
end

#volumeObject



102
103
104
# File 'lib/review/book/base.rb', line 102

def volume
  Volume.sum(chapters.map {|chap| chap.volume })
end