Sha256: ba950d72ee34ce457a68253c7bee7079ebb2e956e4a5c46743c1809cb5d30eeb
Contents?: true
Size: 1.58 KB
Versions: 3
Compression:
Stored size: 1.58 KB
Contents
# encoding: utf-8 module Jiralicious module Parsers ## # The FieldParser module is an extention that assists in # managing hash parsing and implementation. # module FieldParser ## # Parses an Array or Hash into the current class object. # def parse!(fields) unless fields.is_a?(Hash) raise ArgumentError end @jiralicious_field_parser_data = {} singleton = class << self; self end fields.each do |field, details| if details.is_a?(Hash) next if details["name"].nil? method_value = mashify(details["value"]) method_name = normalize(details["name"]) else method_value = mashify(details) method_name = normalize(field) end if singleton.method_defined?(method_name) method_name = "jira_#{method_name}" end @jiralicious_field_parser_data[method_name] = method_value singleton.send :define_method, method_name do @jiralicious_field_parser_data[method_name] end end end private ## # Normalizes key names # def normalize(name) name.gsub(/(\w+)([A-Z].*)/, '\1_\2'). gsub(/\W/, "_"). downcase end ## # Converts Array or Hash to a Mash object # def mashify(data) if data.is_a?(Array) data.map { |d| mashify(d) } elsif data.is_a?(Hash) Hashie::Mash.new(data) else data end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
jiralicious-0.3.0 | lib/jiralicious/parsers/field_parser.rb |
jiralicious-0.2.2 | lib/jiralicious/parsers/field_parser.rb |
jiralicious-0.2.1 | lib/jiralicious/parsers/field_parser.rb |