class AutoData::Parse

Public Class Methods

new() click to toggle source
# File lib/auto_data.rb, line 7
def initialize()
  @gvar=ENV['AUTO_DATA_PATH'].to_s
  if @gvar.length == 0
    raise Exception.new("Variable is not defined : ENV[\'AUTO_DATA_PATH\']")
  end
  @files = Hash.new
  @file_count=0
  Dir[@gvar + '/**/*.yml'].each { |file|
    begin
      @files['fullpath_' + @file_count.to_s]=file
      @files['filename_' + @file_count.to_s]=file.split('/').last
      @name_def_key =file.split('/').last.to_s.split('.').first
      @files['name_' + @file_count.to_s]=@name_def_key #file.split('/').last.to_s.split('.').first
      @info = begin
        YAML.load_file(file)
      rescue Exception => e
        puts "Could not parse auto objects files: #{e.message}"
        raise Exception.new('Could not parse auto objects files: #{e.message}')
      end
      @files["#{@name_def_key}_default_key"]= begin
        @info["default_key"].nil? ? 'NotFound' : @info["default_key"]
      rescue NoMethodError => e
        puts "Couldn't find key #{default_key} - #{e.message}"
      end

      @file_count +=1
    end }
  # puts @files
end

Public Instance Methods

change_scope(filename, new_value) click to toggle source
# File lib/auto_data.rb, line 37
def change_scope(filename, new_value)
  if !@files.value?(filename)
    raise Exception.new("File name '#{filename}' is not found")
  else
    @files["#{filename}_default_key"] = new_value
  end
end

Private Instance Methods

load(file) click to toggle source
# File lib/auto_data.rb, line 86
def load(file)

  if @files.value?(file).nil?
    raise Exception.new("File name is not found #{file}")
  end
  key_value= @files.key(file.to_s).to_s
  key_2find = 'fullpath_' + key_value.split('_').last
  local_file_path= @files.values_at(key_2find)
  @file = begin
    YAML.load_file(local_file_path[0].to_s)
  rescue Exception => e
    puts "Could not parse auto objects files: #{e.message}"
    raise Exception.new('Could not parse auto objects files: #{e.message}')
  end
end
method_missing(filename, *args) click to toggle source
# File lib/auto_data.rb, line 46
def method_missing (filename, *args)
  use_default_key= false
  if args[0].count('.') == 0 #use custom key; >0 usedefault_key
    use_default_key=true
    subkey=args[0].to_s
  else
    fileinfo= args[0].to_s.split('.')
    if fileinfo.size !=2
      raise Exception.new('Malformed structure, must be <AutoData.filename(\'key.subkey\')> ')
    end
    key= fileinfo[0]
    subkey= fileinfo[1]
  end

 load(filename)#call
  if use_default_key
    if @files.key?(filename.to_s + '_default_key')
      default_key = @files["#{filename}_default_key"]
    else
      raise Exception.new("Couldn't find key default_key. ")
    end
    result= begin
      @file["#{default_key}"]["#{subkey}"].nil? ? 'No Value Found' : @file["#{default_key}"]["#{subkey}"]
    rescue NoMethodError => e
      puts "Couldn't find key #{subkey} using 'default_key' #{e.message}"
      raise Exeption.new("Couldn't find key #{subkey} using 'default_key' #{e.message}")
    end
  else
    result= begin
      @file["#{key}"]["#{subkey}"].nil? ? 'No Value Found' : @file["#{key}"]["#{subkey}"]
    rescue NoMethodError => e
      puts "Couldn't find key #{key}.#{subkey} #{e.message}"
      raise Exception.new("Couldn't find key #{key}.#{subkey} #{e.message}" )
    end
  end

  result
end