Class: Icalendar2::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/icalendar2/parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(source) ⇒ Parser

Returns a new instance of Parser.



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/icalendar2/parser.rb', line 6

def initialize(source)
  if source.respond_to?(:gets)
    @file = source
  elsif !source.nil? && source.respond_to?(:to_s)
    @file = StringIO.new(source.to_s, 'r')
  else
    raise ArgumentError, "#{self.class}.new must be called with an IO-like object or a path"
  end

  @previous_line = next_line_of_file
end

Instance Method Details

#parseObject

Returns an iCalendar stream (collection of iCalendar objects).



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/icalendar2/parser.rb', line 19

def parse
  calendars = []

  while (line = next_multiline)
    fields = parse_line(line)
    if fields[:name] == Tokens::COMPONENT_BEGIN && fields[:value] == Calendar::VALUE
      calendar = parse_calendar
      calendars << calendar
    end
  end

  calendars
end