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