From f1f1fddf17161222617ba7b658e5da8b671960fa Mon Sep 17 00:00:00 2001 From: erdgeist Date: Wed, 18 Mar 2009 21:08:35 +0100 Subject: Add a duration parser to libical wrapper --- lib/chaos_calendar/ical_occurrences.c | 12 ++++++++++++ lib/chaos_calendar/ical_occurrences.i | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/chaos_calendar/ical_occurrences.c b/lib/chaos_calendar/ical_occurrences.c index 6515451..e59c1ed 100644 --- a/lib/chaos_calendar/ical_occurrences.c +++ b/lib/chaos_calendar/ical_occurrences.c @@ -62,3 +62,15 @@ VALUE occurrences( VALUE dtstart, VALUE dtend, char *rrule ) { icalrecur_iterator_free(ritr); return occurr; } + +VALUE duration_to_fixnum( char * duration ) { + icalerror_clear_errno(); + icalerror_set_error_state( ICAL_MALFORMEDDATA_ERROR, ICAL_ERROR_NONFATAL); + + struct icaldurationtype dur_struct = icaldurationtype_from_string( duration ); + + if( icaldurationtype_is_bad_duration( dur_struct ) ) + rb_raise(rb_eArgError, "Malformed Duration"); + + return LONG2FIX(icaldurationtype_as_int( dur_struct )); +} diff --git a/lib/chaos_calendar/ical_occurrences.i b/lib/chaos_calendar/ical_occurrences.i index 3f87628..1e91701 100644 --- a/lib/chaos_calendar/ical_occurrences.i +++ b/lib/chaos_calendar/ical_occurrences.i @@ -2,5 +2,5 @@ %inline { VALUE occurrences( VALUE dtstart, VALUE dtend, char * rrule ); + VALUE duration_to_fixnum( char * duration ); } - -- cgit v1.3