class ReVIEW::Catalog
Public Class Methods
new(file)
click to toggle source
# File lib/review/catalog.rb, line 5 def initialize(file) if file.respond_to? :read @yaml = YAML.load(file.read) else ## as Object @yaml = file end @yaml ||= {} end
Public Instance Methods
appendix()
click to toggle source
# File lib/review/catalog.rb, line 57 def appendix return '' unless @yaml['APPENDIX'] @yaml['APPENDIX'].join("\n") end
chaps()
click to toggle source
# File lib/review/catalog.rb, line 19 def chaps return '' unless @yaml['CHAPS'] @yaml['CHAPS'].map do |entry| if entry.is_a?(String) entry elsif entry.is_a?(Hash) entry.values # chaps in a part end end.flatten.join("\n") end
parts()
click to toggle source
# File lib/review/catalog.rb, line 31 def parts return '' unless @yaml['CHAPS'] part_list = @yaml['CHAPS'].map do |entry| if entry.is_a?(Hash) entry.keys end end part_list.flatten.compact.join("\n") end
parts_with_chaps()
click to toggle source
# File lib/review/catalog.rb, line 52 def parts_with_chaps return [] unless @yaml['CHAPS'] @yaml['CHAPS'].flatten.compact end
postdef()
click to toggle source
# File lib/review/catalog.rb, line 62 def postdef return '' unless @yaml['POSTDEF'] @yaml['POSTDEF'].join("\n") end
predef()
click to toggle source
# File lib/review/catalog.rb, line 14 def predef return '' unless @yaml['PREDEF'] @yaml['PREDEF'].join("\n") end
replace_part(old_name, new_name)
click to toggle source
# File lib/review/catalog.rb, line 43 def replace_part(old_name, new_name) @yaml['CHAPS'].map! do |e| if e.is_a?(Hash) and (e.keys.first == old_name) e = { new_name => e.values.first } end e end end
to_s()
click to toggle source
# File lib/review/catalog.rb, line 67 def to_s YAML.dump(@yaml).gsub(/\A---\n/, '') # remove yaml header end
validate!(config, basedir)
click to toggle source
# File lib/review/catalog.rb, line 71 def validate!(config, basedir) filenames = [] if predef.present? filenames.concat(predef.split(/\n/)) end parts_with_chaps.each do |chap| if chap.is_a?(Hash) chap.each_key do |part| if File.extname(part) == '.re' filenames.push(part) end end filenames.concat(chap.values.flatten) else filenames.push(chap) end end if appendix.present? filenames.concat(appendix.split(/\n/)) end if postdef.present? filenames.concat(postdef.split(/\n/)) end filenames.each do |filename| refile = File.join(basedir, config['contentdir'], filename) unless File.exist?(refile) raise FileNotFound, "file not found in catalog.yml: #{refile}" end end end