Files
luos/thirdparty/lime/yaml.class.php
Paula Quispe 9eb7d6cac2 HOR-2689
2017-08-03 17:00:30 -04:00

94 lines
1.9 KiB
PHP

<?php
/**
* yaml class.
*/
class sfYaml
{
/**
* Load YAML into a PHP array statically
*
* 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:
* <code>
* $array = sfYAML::Load('config.yml');
* print_r($array);
* </code>
*
* @return array
* @param string $input Path of YAML file or string containing YAML
*/
public static function load($input)
{
$input = self::getIncludeContents($input);
// 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;
}
// syck is prefered over spyc
if (function_exists('syck_load'))
{
$retval = syck_load($input);
return is_array($retval) ? $retval : array();
}
else
{
require_once(dirname(__FILE__).'/Spyc.class.php');
$spyc = new Spyc();
return $spyc->load($input);
}
}
/**
* Dump YAML from PHP array statically
*
* The dump method, when supplied with an array, will do its best
* to convert the array into friendly YAML.
*
* @return string
* @param array $array PHP array
*/
public static function dump($array)
{
require_once(dirname(__FILE__).'/Spyc.class.php');
$spyc = new Spyc();
return $spyc->dump($array);
}
protected static function getIncludeContents($input)
{
// if input is a file, process it
if (strpos($input, "\n") === false && is_file($input))
{
ob_start();
$retval = include($input);
$contents = ob_get_clean();
// if an array is returned by the config file assume it's in plain php form else in yaml
return is_array($retval) ? $retval : $contents;
}
// else return original input
return $input;
}
}
/**
* Wraps echo to automatically provide a newline
*/
function echoln($string)
{
echo $string."\n";
}