1<?php 2 3namespace Sabre\VObject; 4 5/** 6 * iCalendar/vCard/jCal/jCard/xCal/xCard reader object. 7 * 8 * This object provides a few (static) convenience methods to quickly access 9 * the parsers. 10 * 11 * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 12 * @author Evert Pot (http://evertpot.com/) 13 * @license http://sabre.io/license/ Modified BSD License 14 */ 15class Reader { 16 17 /** 18 * If this option is passed to the reader, it will be less strict about the 19 * validity of the lines. 20 */ 21 const OPTION_FORGIVING = 1; 22 23 /** 24 * If this option is turned on, any lines we cannot parse will be ignored 25 * by the reader. 26 */ 27 const OPTION_IGNORE_INVALID_LINES = 2; 28 29 /** 30 * Parses a vCard or iCalendar object, and returns the top component. 31 * 32 * The options argument is a bitfield. Pass any of the OPTIONS constant to 33 * alter the parsers' behaviour. 34 * 35 * You can either supply a string, or a readable stream for input. 36 * 37 * @param string|resource $data 38 * @param int $options 39 * @param string $charset 40 * @return Document 41 */ 42 static function read($data, $options = 0, $charset = 'UTF-8') { 43 44 $parser = new Parser\MimeDir(); 45 $parser->setCharset($charset); 46 $result = $parser->parse($data, $options); 47 48 return $result; 49 50 } 51 52 /** 53 * Parses a jCard or jCal object, and returns the top component. 54 * 55 * The options argument is a bitfield. Pass any of the OPTIONS constant to 56 * alter the parsers' behaviour. 57 * 58 * You can either a string, a readable stream, or an array for it's input. 59 * Specifying the array is useful if json_decode was already called on the 60 * input. 61 * 62 * @param string|resource|array $data 63 * @param int $options 64 * 65 * @return Document 66 */ 67 static function readJson($data, $options = 0) { 68 69 $parser = new Parser\Json(); 70 $result = $parser->parse($data, $options); 71 72 return $result; 73 74 } 75 76 /** 77 * Parses a xCard or xCal object, and returns the top component. 78 * 79 * The options argument is a bitfield. Pass any of the OPTIONS constant to 80 * alter the parsers' behaviour. 81 * 82 * You can either supply a string, or a readable stream for input. 83 * 84 * @param string|resource $data 85 * @param int $options 86 * 87 * @return Document 88 */ 89 static function readXML($data, $options = 0) { 90 91 $parser = new Parser\XML(); 92 $result = $parser->parse($data, $options); 93 94 return $result; 95 96 } 97 98} 99