X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;ds=sidebyside;f=www%2Fplugins%2Fyaml%2Fsfyaml%2FsfYaml.php;fp=www%2Fplugins%2Fyaml%2Fsfyaml%2FsfYaml.php;h=5a2be2e934a66f0a49e6ea68eba44dcd7893adb6;hb=8fcc303b842d94eccfc05fdf6cfd0b78d9123006;hp=0000000000000000000000000000000000000000;hpb=e5df6e32485f43481d5f8b3b2ae5fbb93b5a9625;p=ptitvelo%2Fweb%2Fwww.git diff --git a/www/plugins/yaml/sfyaml/sfYaml.php b/www/plugins/yaml/sfyaml/sfYaml.php new file mode 100755 index 0000000..5a2be2e --- /dev/null +++ b/www/plugins/yaml/sfyaml/sfYaml.php @@ -0,0 +1,145 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfYaml offers convenience methods to load and dump YAML. + * + * @package symfony + * @subpackage yaml + * @author Fabien Potencier + * @version SVN: $Id: sfYaml.class.php 8988 2008-05-15 20:24:26Z fabien $ + */ +class sfYaml +{ + static protected + $spec = '1.2'; + + /** + * Sets the YAML specification version to use. + * + * @param string $version The YAML specification version + */ + static public function setSpecVersion($version) + { + if (!in_array($version, array('1.1', '1.2'))) + { + throw new InvalidArgumentException(sprintf('Version %s of the YAML specifications is not supported', $version)); + } + + self::$spec = $version; + } + + /** + * Gets the YAML specification version to use. + * + * @return string The YAML specification version + */ + static public function getSpecVersion() + { + return self::$spec; + } + + /** + * Loads YAML into a PHP array. + * + * The load method, when supplied with a YAML stream (string or file), + * will do its best to convert YAML in a file into a PHP array. + * + * Usage: + * + * $array = sfYaml::load('config.yml'); + * print_r($array); + * + * + * @param string $input Path of YAML file or string containing YAML + * + * @return array The YAML converted to a PHP array + * + * @throws InvalidArgumentException If the YAML is not valid + */ + public static function load($input) + { + $file = ''; + + // if input is a file, load it + if (strpos($input, "\n") === false && is_file($input)) + { + $file = $input; + + $content = $yaml = file_get_contents($input); + + // if the file contains valid PHP, process it + if (strpos($content, '<'.'?') !== false + AND !(defined('_YAML_EVAL_PHP') AND !_YAML_EVAL_PHP)) + { + ob_start(); + $retval = eval('?'.'>'.$yaml); + $content = ob_get_clean(); + // syntax error? + if ($retval === FALSE) + $content = $yaml; + } + + // if an array is returned by the config file assume it's in plain php form else in YAML + $input = is_array($retval) ? $retval : $content; + } + + // if an array is returned by the config file assume it's in plain php form else in YAML + if (is_array($input)) + { + return $input; + } + + require_once dirname(__FILE__).'/sfYamlParser.php'; + + $yaml = new sfYamlParser(); + + try + { + $ret = $yaml->parse($input); + } + catch (Exception $e) + { + throw new InvalidArgumentException(sprintf('Unable to parse %s: %s', $file ? sprintf('file "%s"', $file) : 'string', $e->getMessage())); + } + + return $ret; + } + + /** + * Dumps a PHP array to a YAML string. + * + * The dump method, when supplied with an array, will do its best + * to convert the array into friendly YAML. + * + * @param array $array PHP array + * @param integer $inline The level where you switch to inline YAML + * + * @return string A YAML string representing the original PHP array + */ + public static function dump($array, $inline = 2) + { + require_once dirname(__FILE__).'/sfYamlDumper.php'; + + $yaml = new sfYamlDumper(); + + return $yaml->dump($array, $inline); + } +} + +/** + * Wraps echo to automatically provide a newline. + * + * @param string $string The string to echo with new line + */ +function echoln($string) +{ + echo $string."\n"; +}