lib/auto_data.rb in auto_data-0.1.1 vs lib/auto_data.rb in auto_data-0.1.2
- old
+ new
@@ -2,67 +2,104 @@
require "yaml"
module AutoData
class Parse
- #TODO: Make all methods private
+ #TODO: Change methods to 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
+ @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
- 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}
+ @file_count +=1
+ end }
+ # puts @files
+ end
+ 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 #End change_scope
- end
+ private
+ 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)
+ 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}"
+ end
+ else
+ 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
+ end
+
+ result
+ end #End method_missing
+
+ private
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}
-
+ local_file_path= @files.values_at(key_2find)
@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\')> ')
+ 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
- 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
+ end #end Load
- result
- end
- end
-end
+ end #End Parse Class
+
+
+end #End Module