Sha256: a56f669cdd1421720bce6fd557b3d502f09d274ce623bc41b20dfe3270faf93f

Contents?: true

Size: 1.54 KB

Versions: 13

Compression:

Stored size: 1.54 KB

Contents

=begin
  Copyright (C) 2005 Jeff Rose

  This library is free software; you can redistribute it and/or modify it
  under the same terms as the ruby language itself, see the file COPYING for
  details.
=end

require 'date'

### Add some to_ical methods to classes

# class Object
#   def to_ical
#     raise(NotImplementedError, "This object does not implement the to_ical method!")
#   end
# end

module Icalendar
  module TzidSupport
    attr_accessor :icalendar_tzid
  end

  require 'delegate'
  class FrozenProxy < SimpleDelegator
    attr_accessor :ical_params
  end
end

require 'uri/generic'

class String
  def to_ical
    self
  end
end

class Fixnum
  def to_ical
    "#{self}"
  end
end

class Bignum
  def to_ical
    "#{self}"
  end
end

class Float
  def to_ical
    "#{self}"
  end
end

# From the spec: "Values in a list of values MUST be separated by a COMMA
# character (US-ASCII decimal 44)."
class Array
  def to_ical
    map{|elem| elem.to_ical}.join ','
  end
end

module URI
  class Generic
    def to_ical
      "#{self}"
    end
  end
end

class DateTime < Date
  attr_accessor :ical_params
  include Icalendar::TzidSupport

  def to_ical
    s = strftime '%Y%m%dT%H%M%S'

    # UTC time gets a Z suffix
    if icalendar_tzid == "UTC"
      s << "Z"
    end

    s
  end
end

class Date
  attr_accessor :ical_params
  def to_ical(utc = false)
    strftime '%Y%m%d'
  end
end

class Time
  attr_accessor :ical_params
  def to_ical(utc = false)
    s = strftime '%H%M%S'

    # UTC time gets a Z suffix
    if utc
      s << "Z"
    end

    s
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
icalendar-1.5.4 lib/icalendar/conversions.rb
icalendar-1.5.3 lib/icalendar/conversions.rb
icalendar-1.5.2 lib/icalendar/conversions.rb
icalendar-1.5.1 lib/icalendar/conversions.rb
icalendar-1.5.0 lib/icalendar/conversions.rb
icalendar-1.4.5 lib/icalendar/conversions.rb
icalendar-1.4.4 lib/icalendar/conversions.rb
icalendar-1.4.3 lib/icalendar/conversions.rb
icalendar-1.4.2 lib/icalendar/conversions.rb
icalendar-1.4.1 lib/icalendar/conversions.rb
icalendar-1.4.0 lib/icalendar/conversions.rb
icalendar-1.3.0 lib/icalendar/conversions.rb
icalendar-1.2.4 lib/icalendar/conversions.rb