function testParsingJcalWithUntil() { $jcalWithUntil = '["vcalendar",[],[["vevent",[["uid",{},"text","dd1f7d29"],["organizer",{"cn":"robert"},"cal-address","mailto:robert@robert.com"],["dtstart",{"tzid":"Europe/Berlin"},"date-time","2015-10-21T12:00:00"],["dtend",{"tzid":"Europe/Berlin"},"date-time","2015-10-21T13:00:00"],["transp",{},"text","OPAQUE"],["rrule",{},"recur",{"freq":"MONTHLY","until":"2016-01-01T22:00:00Z"}]],[]]]]'; $parser = new Parser\Json(); $parser->setInput($jcalWithUntil); $vcalendar = $parser->parse(); $eventAsArray = $vcalendar->select('VEVENT'); $event = reset($eventAsArray); $rruleAsArray = $event->select('RRULE'); $rrule = reset($rruleAsArray); $this->assertNotNull($rrule); $this->assertEquals($rrule->getValue(), 'FREQ=MONTHLY;UNTIL=20160101T220000Z'); }
/** * Parses a jCard or jCal object, and returns the top component. * * The options argument is a bitfield. Pass any of the OPTIONS constant to * alter the parsers' behaviour. * * You can either a string, a readable stream, or an array for it's input. * Specifying the array is useful if json_decode was already called on the * input. * * @param string|resource|array $data * @param int $options * @return Node */ static function readJson($data, $options = 0) { $parser = new Parser\Json(); $result = $parser->parse($data, $options); return $result; }