class BuhoCfdi::BaseNode

Attributes

node_hash[RW]

Public Class Methods

new(params = {}) click to toggle source
# File lib/buho_cfdi/base_node.rb, line 8
def initialize(params = {})
  @node_hash = {}

  params.each_pair do |key, value|
    if respond_to? key
      instance_variable_set("@#{key}", value)
    end
  end
end

Private Class Methods

attr_accessor(*args) click to toggle source
Calls superclass method
# File lib/buho_cfdi/base_node.rb, line 77
def attr_accessor(*args)
  @params ||= []
  @params.concat(args)
  
  super(*args)
end
build_child(params) click to toggle source
# File lib/buho_cfdi/base_node.rb, line 66
def build_child(params)
  node = self.new(params)

  if node.valid?
    self.class.send(:attr_reader, self.name.downcase.sub( '::', '_'))
    instance_variable_set("@#{self.name.downcase.sub( '::', '_')}", self.new)
  else
    nil
  end
end
params() click to toggle source
# File lib/buho_cfdi/base_node.rb, line 84
def params
  @params
end

Public Instance Methods

build_child(params) click to toggle source
# File lib/buho_cfdi/base_node.rb, line 37
def build_child(params)
  node = self.class.new(params)

  if node.valid?
    self.class.send(:attr_reader, self.class.name.downcase.sub( '::', '_'))
    instance_variable_set("@#{self.class.name.downcase.sub( '::', '_')}", self.class.new)
  else
    nil
  end
end
build_child!(klass, params) click to toggle source
# File lib/buho_cfdi/base_node.rb, line 26
def build_child!(klass, params)
  node = klass.new(params)

  if node.valid?
    self.class.send(:attr_reader, klass.name.downcase.sub( '::', '_'))
    instance_variable_set("@#{klass.name.downcase.sub( '::', '_')}", node)
  else
    nil
  end
end
build_children(klass) click to toggle source
# File lib/buho_cfdi/base_node.rb, line 48
def build_children(klass)
  self.class.send(:attr_reader, klass.name.downcase.sub( '::', '_'))

  instance_variable_set(
    "@#{klass.name.downcase.sub( '::', '_')}",
    ::Nodes::Collection.new(klass)
  )

  self
end
to_hash() click to toggle source
# File lib/buho_cfdi/base_node.rb, line 18
def to_hash
  self.class.params.each do |param|
    node_hash[define_locale(param)] = send(param) unless send(param).blank?
  end

  node_hash
end

Private Instance Methods

define_locale(param) click to toggle source
# File lib/buho_cfdi/base_node.rb, line 61
def define_locale(param)
  I18n.t("nodes.#{self.class.name.demodulize.underscore}.#{param}")
end