def test_unfolding(self): """Test unfolding lines.""" input = ('BEGIN:VCALENDAR\n' 'VERSION:2.0\n' 'BEGIN:VEVENT\n' 'UID:581361a0-1dd2-11b2-9a42-bd3958eeac9a\n' 'X-MOZILLA-RECUR-DEFAULT-INTERVAL:0\n' 'DTSTART;VALUE=DATE:20050530\n' 'DTEND;VALUE=DATE:20050531\n' 'DTSTAMP:20050601T074604Z\n' 'DESCRIPTION:opps !!! this is a really big information, ..., ' 'but does it change anything \n' ' in reality ?? We should see a radical change in the next \n' ' 3 months, shouldn\'t we ???\\nAaah !!!\n') expected = [ 'BEGIN:VCALENDAR', 'VERSION:2.0', 'BEGIN:VEVENT', 'UID:581361a0-1dd2-11b2-9a42-bd3958eeac9a', 'X-MOZILLA-RECUR-DEFAULT-INTERVAL:0', 'DTSTART;VALUE=DATE:20050530', 'DTEND;VALUE=DATE:20050531', 'DTSTAMP:20050601T074604Z', 'DESCRIPTION:opps !!! this is a really big information, ..., but' ' does it change anything in reality ?? We should see a radical' ' change in the next 3 months, shouldn\'t we ???\\nAaah !!!' ] output = unfold_lines(input) for i, line in enumerate(output): self.assertEqual(line, expected[i])
def test_unfolding(self): """Test unfolding lines.""" input = ( 'BEGIN:VCALENDAR\n' 'VERSION:2.0\n' 'BEGIN:VEVENT\n' 'UID:581361a0-1dd2-11b2-9a42-bd3958eeac9a\n' 'X-MOZILLA-RECUR-DEFAULT-INTERVAL:0\n' 'DTSTART;VALUE=DATE:20050530\n' 'DTEND;VALUE=DATE:20050531\n' 'DTSTAMP:20050601T074604Z\n' 'DESCRIPTION:opps !!! this is a really big information, ..., ' 'but does it change anything \n' ' in reality ?? We should see a radical change in the next \n' ' 3 months, shouldn\'t we ???\\nAaah !!!\n' ) expected = [ 'BEGIN:VCALENDAR', 'VERSION:2.0', 'BEGIN:VEVENT', 'UID:581361a0-1dd2-11b2-9a42-bd3958eeac9a', 'X-MOZILLA-RECUR-DEFAULT-INTERVAL:0', 'DTSTART;VALUE=DATE:20050530', 'DTEND;VALUE=DATE:20050531', 'DTSTAMP:20050601T074604Z', 'DESCRIPTION:opps !!! this is a really big information, ..., but' ' does it change anything in reality ?? We should see a radical' ' change in the next 3 months, shouldn\'t we ???\\nAaah !!!'] output = unfold_lines(input) for i, line in enumerate(output): self.assertEqual(line, expected[i])
def parse_ical(self, data): """Parse iCal data to produce a sequence of tuples: name, value {param_name: param_value} Where all the elements ('name', 'value', 'param_name' and 'param_value') are byte strings. Only elements that are handled by Ikaaro are keeped """ unfolded = unfold_lines(data) iterator = iter(unfolded) for line in iterator: parameters = {} name, line = read_name(line) # Read the parameters and the property value value, parameters = get_tokens(line) if name == 'BEGIN' and value not in ('VCALENDAR', 'VEVENT'): while get_tokens(read_name(iterator.next())[1])[0] != value: pass continue else: yield name, value, parameters