Module: Icalendar::HasProperties::ClassMethods
- Defined in:
- lib/icalendar/has_properties.rb
Instance Method Summary collapse
- #default_property_types ⇒ Object
- #multi_property(prop, klass) ⇒ Object
- #multiple_properties ⇒ Object
- #mutex_properties ⇒ Object
- #mutually_exclusive_properties(*properties) ⇒ Object
- #optional_property(prop, klass = Icalendar::Values::Text, suggested_single = false) ⇒ Object
- #optional_single_property(prop, klass = Icalendar::Values::Text) ⇒ Object
- #properties ⇒ Object
- #required_multi_property(prop, klass = Icalendar::Values::Text, validator = nil) ⇒ Object
- #required_properties ⇒ Object
- #required_property(prop, klass = Icalendar::Values::Text, validator = nil) ⇒ Object
- #single_properties ⇒ Object
- #single_property(prop, klass) ⇒ Object
- #suggested_single_properties ⇒ Object
Instance Method Details
#default_property_types ⇒ Object
78 79 80 |
# File 'lib/icalendar/has_properties.rb', line 78 def default_property_types @default_property_types ||= Hash.new { |h,k| Icalendar::Values::Text } end |
#multi_property(prop, klass) ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
# File 'lib/icalendar/has_properties.rb', line 120 def multi_property(prop, klass) self.multiple_properties << prop.to_s self.default_property_types[prop.to_s] = klass property_var = "@#{prop}" define_method "#{prop}=" do |value| instance_variable_set property_var, [map_property_value(value, klass, true)].compact end define_method prop do if instance_variable_defined? property_var instance_variable_get property_var else send "#{prop}=", nil end end define_method "append_#{prop}" do |value| send(prop) << map_property_value(value, klass, true) end end |
#multiple_properties ⇒ Object
62 63 64 |
# File 'lib/icalendar/has_properties.rb', line 62 def multiple_properties @multiple_properties ||= [] end |
#mutex_properties ⇒ Object
74 75 76 |
# File 'lib/icalendar/has_properties.rb', line 74 def mutex_properties @mutex_properties ||= [] end |
#mutually_exclusive_properties(*properties) ⇒ Object
98 99 100 |
# File 'lib/icalendar/has_properties.rb', line 98 def mutually_exclusive_properties(*properties) self.mutex_properties << properties end |
#optional_property(prop, klass = Icalendar::Values::Text, suggested_single = false) ⇒ Object
102 103 104 105 |
# File 'lib/icalendar/has_properties.rb', line 102 def optional_property(prop, klass = Icalendar::Values::Text, suggested_single = false) self.suggested_single_properties << prop if suggested_single multi_property prop, klass end |
#optional_single_property(prop, klass = Icalendar::Values::Text) ⇒ Object
94 95 96 |
# File 'lib/icalendar/has_properties.rb', line 94 def optional_single_property(prop, klass = Icalendar::Values::Text) single_property prop, klass end |
#properties ⇒ Object
54 55 56 |
# File 'lib/icalendar/has_properties.rb', line 54 def properties single_properties + multiple_properties end |
#required_multi_property(prop, klass = Icalendar::Values::Text, validator = nil) ⇒ Object
88 89 90 91 92 |
# File 'lib/icalendar/has_properties.rb', line 88 def required_multi_property(prop, klass = Icalendar::Values::Text, validator = nil) validator ||= ->(component, value) { !value.compact.empty? } self.required_properties[prop] = validator multi_property prop, klass end |
#required_properties ⇒ Object
66 67 68 |
# File 'lib/icalendar/has_properties.rb', line 66 def required_properties @required_properties ||= {} end |
#required_property(prop, klass = Icalendar::Values::Text, validator = nil) ⇒ Object
82 83 84 85 86 |
# File 'lib/icalendar/has_properties.rb', line 82 def required_property(prop, klass = Icalendar::Values::Text, validator = nil) validator ||= ->(component, value) { !value.nil? } self.required_properties[prop] = validator single_property prop, klass end |
#single_properties ⇒ Object
58 59 60 |
# File 'lib/icalendar/has_properties.rb', line 58 def single_properties @single_properties ||= [] end |
#single_property(prop, klass) ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/icalendar/has_properties.rb', line 107 def single_property(prop, klass) self.single_properties << prop.to_s self.default_property_types[prop.to_s] = klass define_method prop do instance_variable_get "@#{prop}" end define_method "#{prop}=" do |value| instance_variable_set "@#{prop}", map_property_value(value, klass, false) end end |
#suggested_single_properties ⇒ Object
70 71 72 |
# File 'lib/icalendar/has_properties.rb', line 70 def suggested_single_properties @suggested_single_properties ||= [] end |