Sha256: afc10cb45c86b084e078e4f475f9acf8d76193c0f32eb867a41e55ae98134621

Contents?: true

Size: 663 Bytes

Versions: 1

Compression:

Stored size: 663 Bytes

Contents

require 'icalendar/tzinfo'

module JSONiCal
  class CalendarBuilder

    def initialize(*events)
      @events = *events
    end

    def call(calendar_name: nil, vendor: nil)
      calendar = Icalendar::Calendar.new

      calendar.add_timezone(timezone)

      @events.each { |event| calendar.add_event(event.to_ics(vendor: vendor)) }

      calendar.publish

      unless calendar_name.nil?
        calendar.append_custom_property('X-WR-CALNAME', calendar_name)
      end

      calendar.to_ical
    end

    private

    def timezone
      TZInfo::Timezone.
        get(JSONiCal::VEVENTModel::TIMEZONE).
        ical_timezone(Time.now.utc)
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
JSONiCal-1.0.0 lib/jsonical/calendar_builder.rb