class Icalendar::Component
Attributes
ical_name[R]
name[R]
parent[RW]
Public Class Methods
new(name, ical_name = nil)
click to toggle source
Calls superclass method
Icalendar::HasComponents.new
# File lib/icalendar/component.rb, line 13 def initialize(name, ical_name = nil) @name = name @ical_name = ical_name || "V#{name.upcase}" super() end
Public Instance Methods
new_uid()
click to toggle source
# File lib/icalendar/component.rb, line 19 def new_uid SecureRandom.uuid end
to_ical()
click to toggle source
# File lib/icalendar/component.rb, line 23 def to_ical [ "BEGIN:#{ical_name}", ical_properties, ical_components, "END:#{ical_name}\r\n" ].compact.join "\r\n" end
Private Instance Methods
ical_components()
click to toggle source
# File lib/icalendar/component.rb, line 58 def ical_components collection = [] (self.class.components + custom_components.keys).each do |component_name| components = send component_name components.each do |component| collection << component.to_ical end end collection.empty? ? nil : collection.join.chomp("\r\n") end
ical_fold(content_line)
click to toggle source
# File lib/icalendar/component.rb, line 53 def ical_fold(content_line) split = content_line.split '' [].tap { |a| a << split.shift(Icalendar::MAX_LINE_LENGTH).join until split.empty? }.join "\r\n " end
ical_prop_name(prop_name)
click to toggle source
# File lib/icalendar/component.rb, line 49 def ical_prop_name(prop_name) prop_name.gsub(/\Aip_/, '').gsub('_', '-').upcase end
ical_properties()
click to toggle source
# File lib/icalendar/component.rb, line 34 def ical_properties (self.class.properties + custom_properties.keys).map do |prop| value = property prop unless value.nil? if value.is_a? ::Array value.map do |part| ical_fold "#{ical_prop_name prop}#{part.to_ical self.class.default_property_types[prop]}" end.join "\r\n" unless value.empty? else ical_fold "#{ical_prop_name prop}#{value.to_ical self.class.default_property_types[prop]}" end end end.compact.join "\r\n" end