X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fplugins%2Fyaml%2Fsfyaml%2FsfYamlDumper.php;fp=www%2Fplugins%2Fyaml%2Fsfyaml%2FsfYamlDumper.php;h=0ada2b37d210986e6dadd7c40d2b4cf5b60d6564;hb=8fcc303b842d94eccfc05fdf6cfd0b78d9123006;hp=0000000000000000000000000000000000000000;hpb=e5df6e32485f43481d5f8b3b2ae5fbb93b5a9625;p=ptitvelo%2Fweb%2Fwww.git diff --git a/www/plugins/yaml/sfyaml/sfYamlDumper.php b/www/plugins/yaml/sfyaml/sfYamlDumper.php new file mode 100755 index 0000000..0ada2b3 --- /dev/null +++ b/www/plugins/yaml/sfyaml/sfYamlDumper.php @@ -0,0 +1,60 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfYamlInline.php'); + +/** + * sfYamlDumper dumps PHP variables to YAML strings. + * + * @package symfony + * @subpackage yaml + * @author Fabien Potencier + * @version SVN: $Id: sfYamlDumper.class.php 10575 2008-08-01 13:08:42Z nicolas $ + */ +class sfYamlDumper +{ + /** + * Dumps a PHP value to YAML. + * + * @param mixed $input The PHP value + * @param integer $inline The level where you switch to inline YAML + * @param integer $indent The level o indentation indentation (used internally) + * + * @return string The YAML representation of the PHP value + */ + public function dump($input, $inline = 0, $indent = 0) + { + $output = ''; + $prefix = $indent ? str_repeat(' ', $indent) : ''; + + if ($inline <= 0 || !is_array($input) || empty($input)) + { + $output .= $prefix.sfYamlInline::dump($input); + } + else + { + $isAHash = array_keys($input) !== range(0, count($input) - 1); + + foreach ($input as $key => $value) + { + $willBeInlined = $inline - 1 <= 0 || !is_array($value) || empty($value); + + $output .= sprintf('%s%s%s%s', + $prefix, + $isAHash ? sfYamlInline::dump($key).':' : '-', + $willBeInlined ? ' ' : "\n", + $this->dump($value, $inline - 1, $willBeInlined ? 0 : $indent + 2) + ).($willBeInlined ? "\n" : ''); + } + } + + return $output; + } +}