class Vobject::Property
Attributes
group[RW]
multiple[RW]
norm[RW]
params[RW]
prop_name[RW]
value[RW]
Public Class Methods
new(key, options)
click to toggle source
# File lib/vobject/property.rb, line 17 def initialize(key, options) if options.class == Array self.multiple = [] options.each do |v| multiple << property_base_class.new(key, v) self.prop_name = key end else self.prop_name = key if options.nil? || options.empty? self.group = nil self.params = [] self.value = nil else self.group = options[:group] self.prop_name = key unless options[:params].nil? || options[:params].empty? self.params = [] options[:params].each do |k, v| params << parameter_base_class.new(k, v) end end # self.value = parse_value(options[:value]) self.value = options[:value] end end self.norm = nil raise_invalid_initialization if key != name end
Public Instance Methods
<=>(another)
click to toggle source
# File lib/vobject/property.rb, line 7 def <=>(another) if self.prop_name =~ /^VERSION$/i -1 elsif another.prop_name =~ /^VERSION$/i 1 else self.to_norm <=> another.to_norm end end
to_hash()
click to toggle source
# File lib/vobject/property.rb, line 107 def to_hash ret = {} if multiple ret[prop_name] = [] multiple.each do |c| ret[prop_name] = ret[prop_name] << c.to_hash[prop_name] end else ret = {prop_name => { value: value.to_hash } } ret[prop_name][:group] = group unless group.nil? if params ret[prop_name][:params] = {} params.each do |p| ret[prop_name][:params] = ret[prop_name][:params].merge p.to_hash end end end ret end
to_norm()
click to toggle source
# File lib/vobject/property.rb, line 75 def to_norm if @norm.nil? if multiple.nil? || multiple.empty? ret = to_norm_line else arr = [] multiple.sort.each do |x| arr << x.to_norm_line end ret = arr.join("") end @norm = ret end @norm end
to_norm_line()
click to toggle source
# File lib/vobject/property.rb, line 91 def to_norm_line line = group ? "#{group}." : "" line << name.to_s.tr("_", "-").upcase (params || {}).sort.each do |p| line << ";#{p.to_norm}" end line << ":#{value.to_norm}" line = Vobject::fold_line(line) << "\n" line end
to_s()
click to toggle source
# File lib/vobject/property.rb, line 47 def to_s if multiple.nil? || multiple.empty? ret = to_s_line else arr = [] multiple.each do |x| arr << x.to_s_line end ret = arr.join("") end ret end
to_s_line()
click to toggle source
# File lib/vobject/property.rb, line 60 def to_s_line line = group ? "#{group}." : "" line << name.to_s.tr("_", "-") (params || {}).each do |p| line << ";#{p}" end line << ":#{value}" line = Vobject::fold_line(line) << "\n" line end
Private Instance Methods
default_value_type()
click to toggle source
# File lib/vobject/property.rb, line 147 def default_value_type "text" end
name()
click to toggle source
# File lib/vobject/property.rb, line 129 def name prop_name end
parameter_base_class()
click to toggle source
# File lib/vobject/property.rb, line 155 def parameter_base_class Vobject::Parameter end
parse_text_value(value)
click to toggle source
# File lib/vobject/property.rb, line 139 def parse_text_value(value) value end
parse_value(value)
click to toggle source
# File lib/vobject/property.rb, line 133 def parse_value(value) parse_method = :"parse_#{value_type}_value" parse_method = respond_to?(parse_method, true) ? parse_method : :parse_text_value send(parse_method, value) end
property_base_class()
click to toggle source
# File lib/vobject/property.rb, line 151 def property_base_class Vobject::Property end
raise_invalid_initialization()
click to toggle source
# File lib/vobject/property.rb, line 159 def raise_invalid_initialization raise "vObject property initialization failed" end
value_type()
click to toggle source
# File lib/vobject/property.rb, line 143 def value_type params ? params[0].value : default_value_type end