spyc has a parsing bug which causes partials to fail. I mean, they fail for other reasons too. And we're getting to those. But we don't need to debug YAML parsers while we're at it.
61 lines
1.7 KiB
PHP
61 lines
1.7 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the symfony package.
|
|
* (c) Fabien Potencier <fabien.potencier@symfony-project.com>
|
|
*
|
|
* 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 <fabien.potencier@symfony-project.com>
|
|
* @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;
|
|
}
|
|
}
|