Sha256: c1fe9f0545a61004d5560673f1606e64cd6fa2098dd18a9f5c3c09e58271ed3a

Contents?: true

Size: 1.89 KB

Versions: 1

Compression:

Stored size: 1.89 KB

Contents

require "auto_data/version"
require "yaml"
module AutoData


  class Parse
    #TODO: Make all methods private
    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
        @files['name_' + @file_count.to_s]=file.split('/').last.to_s.split('.').first
        @file_count +=1
        end}


    end

    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 =nil
      @files.each_pair {|key,value| begin
        if key == key_2find
          local_file_path = value
          break
        end
      end}

      @file = begin
              YAML.load_file(local_file_path)
            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

    def method_missing (filename, *args)
      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]
      load(filename)
      result= begin @file["#{key}"]["#{subkey}"].nil? ? 'No Value Found' : @file["#{key}"]["#{subkey}"]
      rescue NoMethodError => e
                puts "Couldn't find key #{subkey}.#{subkey} #{e.message}"
      end

      result
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
auto_data-0.1.1 lib/auto_data.rb