class CookbookReader::Parser
Public Class Methods
new(argv)
click to toggle source
# File lib/cookbook-reader/parser.rb, line 4 def initialize(argv) @options = Options.new(argv) @top_list = [] end
Public Instance Methods
display_data()
click to toggle source
# File lib/cookbook-reader/parser.rb, line 16 def display_data @top_list.each do |element| puts "Cookbook: #{element['name']}\n" puts " Dependancies:" if element['depends'] element['depends'].each do |name, version| puts " #{name}, #{version}\n" end else puts " None\n" end puts "\n" end end
parse()
click to toggle source
# File lib/cookbook-reader/parser.rb, line 9 def parse @metadata_list = Array.new Dir.glob("#{@options.path_to_search}/**/metadata.rb") do |filename| @metadata_list.push read_file filename end end
Private Instance Methods
add_dependencies(line)
click to toggle source
# File lib/cookbook-reader/parser.rb, line 56 def add_dependencies(line) line.slice! "depends " k, v = line.chomp.split(",") v = "none" if v.nil? k.strip! v.strip! v = v.chomp('"').reverse.chomp('"').reverse v = v.chomp('"').reverse.chomp('"').reverse k = k.chomp('"').reverse.chomp('"').reverse k.strip! v.strip! @depends_list[k] = v @depends_list end
read_file(filename)
click to toggle source
# File lib/cookbook-reader/parser.rb, line 32 def read_file(filename) @hash = {} @depends_list = {} File.open(filename) do |fp| fp.each do |line| key, value = line.chomp.split(" ") next if key.nil? || value.nil? key.strip! unless key.nil? value.strip! unless value.nil? key = key.chomp('"').reverse.chomp('"').reverse value = value.chomp('"').reverse.chomp('"').reverse if key =~ /depends/ @hash[key] = add_dependencies(line) else @hash[key] = value end end end @top_list.push @hash end