class Komagire::KeyList::Converter
Attributes
attribute[R]
content_class_name[R]
delimiter[R]
Public Class Methods
new(content_class_name, attribute, delimiter)
click to toggle source
# File lib/komagire/key_list.rb, line 69 def initialize(content_class_name, attribute, delimiter) @content_class_name = content_class_name @attribute = attribute @delimiter = delimiter end
Public Instance Methods
convert(value)
click to toggle source
# File lib/komagire/key_list.rb, line 75 def convert(value) convert_to_cskeys(value) || '' end
convert_to_cskeys(value)
click to toggle source
# File lib/komagire/key_list.rb, line 79 def convert_to_cskeys(value) case value when String value when Komagire::KeyList if value.content_class_name == content_class_name && value.attribute == attribute return value.cskeys end raise DifferentContentClass else values = if value.is_a?(Array) then value elsif value.respond_to?(:to_a) then value.to_a elsif value.respond_to?(:to_ary) then value.to_ary else raise ArgumentError end convert_to_cskeys_from_array(values.compact) end end
convert_to_cskeys_from_array(values)
click to toggle source
# File lib/komagire/key_list.rb, line 100 def convert_to_cskeys_from_array(values) if values.all? { |v| v.is_a?(String) } values.join(delimiter) elsif values.all? { |v| v.is_a?(content_class_name.constantize) } values.map(&attribute).join(delimiter) else raise ArgumentError end end