class Nfe::NfeObject

Public Class Methods

class_name() click to toggle source
# File lib/nfe/nfe_object.rb, line 58
def self.class_name
  self.name.split('::')[-1]
end
create_from(params) click to toggle source
# File lib/nfe/nfe_object.rb, line 8
def self.create_from(params)
  obj = self.new
  obj.reflesh_object(params)
end
new() click to toggle source
# File lib/nfe/nfe_object.rb, line 62
def initialize()
  @values = {}
end
url() click to toggle source
# File lib/nfe/nfe_object.rb, line 50
def self.url
  "/v1/#{CGI.escape(class_name.downcase)}s"
end

Public Instance Methods

create_fields(params) click to toggle source
# File lib/nfe/nfe_object.rb, line 22
def create_fields(params)
  instance_eval do
    metaclass.instance_eval do
      params.keys.each do |key|
        define_method(key) { @values[key] }

        define_method("#{key}=") do |value|
          @values[key] = value
        end
      end
    end
  end
end
create_list(array) click to toggle source
# File lib/nfe/nfe_object.rb, line 104
def create_list(array)
  hash = {}
  hash[:data] = array
  hash[:object] = 'list'
  hash
end
metaclass() click to toggle source
# File lib/nfe/nfe_object.rb, line 4
def metaclass
  class << self; self; end
end
method_missing(name, *args) click to toggle source
# File lib/nfe/nfe_object.rb, line 66
def method_missing(name, *args)
  if name.to_s.end_with? '='
    name = name.to_s[0...-1].to_sym
  end

  if serialize_params.include? name
    @values[name] = args[0]
  else
    raise NoMemoryError.new ("Cannot set #{name} on this object")
  end
end
reflesh_object(params) click to toggle source
# File lib/nfe/nfe_object.rb, line 13
def reflesh_object(params)
  if params.class == Array
    params = create_list(params)
  end
  create_fields(params)
  set_properties(params)
  self
end
set_properties(params) click to toggle source
# File lib/nfe/nfe_object.rb, line 36
def set_properties(params)
  instance_eval do
    params.each do |key, value|
      if value.class == Hash
        @values[key] = Util.get_object_type(value['object']).create_from(value)
      elsif value.class == Array
        @values[key] = value.map{ |v| Util.get_object_type(v['object']).create_from(v) }
      else
        @values[key] = value
      end
    end
  end
end
to_hash() click to toggle source
# File lib/nfe/nfe_object.rb, line 78
def to_hash
  @values.inject({}) do |result, (key,value)|
    if value.is_a? Array
      list = []
      value.each do |obj|
        list.push(obj.respond_to?(:to_hash) ? obj.to_hash : value)
      end
      result[key] = list
    else if value.respond_to?(:to_hash)
           result[key] = value.to_hash
         else
           result[key] =  value
         end
    end
    result
  end
end
to_json(*a) click to toggle source
# File lib/nfe/nfe_object.rb, line 96
def to_json(*a)
  JSON.generate(@values)
end
to_s() click to toggle source
# File lib/nfe/nfe_object.rb, line 100
def to_s
  JSON.generate(@values)
end
url() click to toggle source
# File lib/nfe/nfe_object.rb, line 54
def url
  "#{self.class.url}/#{self.id}"
end