Class: XML::MappingExtensions::TypesafeEnumNode

Inherits:
NodeBase
  • Object
show all
Defined in:
lib/xml/mapping_extensions/typesafe_enum_node.rb

Overview

Base class for single-attribute nodes with values that extend TypesafeEnum::Base

Usage: # for node class MyEnum typesafe_enum_node :my_enum, '@my_enum', default_value: nil, class: MyEnum

Instance Method Summary collapse

Methods inherited from NodeBase

#extract_attr_value, #set_attr_value

Constructor Details

#initialize(*args) ⇒ TypesafeEnumNode

Returns a new instance of TypesafeEnumNode.



14
15
16
17
# File 'lib/xml/mapping_extensions/typesafe_enum_node.rb', line 14

def initialize(*args)
  super
  @enum_class = @options[:class]
end

Instance Method Details

#to_value(xml_text) ⇒ Object



19
20
21
22
23
# File 'lib/xml/mapping_extensions/typesafe_enum_node.rb', line 19

def to_value(xml_text)
  enum_instance = @enum_class.find_by_value(xml_text)
  enum_instance = @enum_class.find_by_value_str(xml_text) unless enum_instance
  enum_instance
end

#to_xml_text(enum_instance) ⇒ Object



25
26
27
# File 'lib/xml/mapping_extensions/typesafe_enum_node.rb', line 25

def to_xml_text(enum_instance)
  enum_instance.value.to_s if enum_instance
end