module Juniter::HasAttributes

Public Class Methods

included(base) click to toggle source
# File lib/juniter/has_attributes.rb, line 6
def self.included(base)
  base.extend(ClassMethods)
end

Public Instance Methods

assign_attributes_from_xml(node) click to toggle source
# File lib/juniter/has_attributes.rb, line 45
def assign_attributes_from_xml(node)
  attributes = node.attributes
  self.class.attributes.each do |name|
    key = self.class.attribute_aliases.fetch(name, name).to_sym
    mapped = attributes.key?(key) ? self.class.attribute_processors[name].call(node[key]) : nil
    public_send "#{name}=", mapped
  end
end
xml_attributes() click to toggle source
# File lib/juniter/has_attributes.rb, line 54
def xml_attributes
  self.class.attributes.each_with_object({}) do |name, hash|
    key = self.class.attribute_aliases.fetch(name, name)
    value = public_send(name)
    raise UnsetAttributeError if self.class.required_attributes.include?(name) && value.nil?
    hash[key] = public_send(name)
  end
end

Protected Instance Methods

valid_number?(value) click to toggle source
# File lib/juniter/has_attributes.rb, line 65
def valid_number?(value)
  raise ArgumentError, "Must be a number" unless value.is_a?(Numeric)
end