Class: ODM::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/odm.rb

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ Parser

Returns a new instance of Parser.



62
63
64
# File 'lib/odm.rb', line 62

def initialize &block
  @class= Classes.new(&block)
end

Instance Method Details

#parse(obj) ⇒ Object



96
97
98
# File 'lib/odm.rb', line 96

def parse(obj)
  self.parse!(obj.dup)
end

#parse!(obj) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/odm.rb', line 66

def parse!(obj)

  case ODM::Helper.class?( obj.class ).to_s.downcase.to_sym

    when :array
      var=  @class.__send__(ODM::Helper.class?( obj.class ).to_s.downcase)[ *obj.map!{ |e| self.parse!(e) } ]
      begin; var.__send__( :initialize, obj ) ;rescue ::NoMethodError,::ArgumentError ;end
      return var

    when :hash
      var= @class.__send__(ODM::Helper.class?( obj.class ).to_s.downcase)[ *obj.map{ |k,v| { self.parse!(k) => self.parse!(v) } } ]
      begin; var.__send__( :initialize, obj ) ;rescue ::NoMethodError,::ArgumentError ;end
      return var

    else

      begin

        klass= @class.__send__(ODM::Helper.class?( obj.class ).to_s.downcase)
        return obj if klass.nil?
        return klass.new(obj)

      rescue ::NoMethodError, ::ArgumentError
        return obj
      end

  end

end

#parse_json(obj) ⇒ Object



100
101
102
103
# File 'lib/odm.rb', line 100

def parse_json(obj)
  require 'json'
  self.parse(JSON.parse(obj))
end

#parse_safe_yaml(obj) ⇒ Object Also known as: parse_safe_yml



112
113
114
115
# File 'lib/odm.rb', line 112

def parse_safe_yaml(obj)
  require 'yaml'
  self.parse(YAML.safe_load(obj))
end

#parse_yaml(obj) ⇒ Object Also known as: parse_yml



105
106
107
108
# File 'lib/odm.rb', line 105

def parse_yaml(obj)
  require 'yaml'
  self.parse(YAML.load(obj))
end