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