Sha256: 8a364855cae2c465043f5fe962dbc641aa66377bdaaf95822489ba7ee0708ea8
Contents?: true
Size: 1.74 KB
Versions: 2
Compression:
Stored size: 1.74 KB
Contents
module IceCream class Parser def self.get_flavor path all_particularities = File.read(path).split("\n").map objectify get_flavor_name(path), all_particularities end private def self.get_flavor_name path title = slice_between_strings(path, "/flavors/", ".flavor") end def self.parse_variables particularity particularity.split("=").first.strip.to_s end def self.parse_values particularity particularity.split("=").last.strip end def self.slice_between_strings(string, str_start, str_end) start_at = string.index(str_start).to_i + str_start.size end_at = string.index(str_end) string = string.slice start_at..end_at-1 end def self.fix_value value if value[0] == ":" final = value.gsub(":","").to_sym elsif !value.slice("\"").nil? final = value.gsub("\"","") elsif !value.slice(".").nil? final = value.to_f if Float(value) rescue false elsif !((Integer(value) rescue nil) == nil) final = value.to_i else final = "" end final end def self.objectify flavor, all_particularities class_name = flavor.capitalize klass = Object.const_set(class_name,Class.new) variables = all_particularities.each { | particularity | parse_variables particularity } values = all_particularities.each { | particularity | parse_values particularity } klass.class_eval do attr_accessor *variables define_method(:initialize) do variables.each_with_index do |variable_name,i| instance_variable_set("@"+variable_name, Parser.fix_value(values[i])) end end end obj = klass.new end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
icecream-0.0.6 | lib/icecream/parser.rb |
icecream-0.0.5 | lib/icecream/parser.rb |