/** * Sets the YAML specification version to use. * * @param string $version The YAML specification version */ public static 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; }
protected function parseYamlFile($file) { $yml = lmbYaml::load($file); return new lmbObject($yml); }
/** * Evaluates scalars and replaces magic values. * * @param string $scalar * * @return string A YAML string */ protected static function evaluateScalar($scalar) { $scalar = trim($scalar); if ('1.1' === lmbYaml::getSpecVersion()) { $trueValues = array('true', 'on', '+', 'yes', 'y'); $falseValues = array('false', 'off', '-', 'no', 'n'); } else { $trueValues = array('true'); $falseValues = array('false'); } switch (true) { case 'null' == strtolower($scalar): case '' == $scalar: case '~' == $scalar: return null; case 0 === strpos($scalar, '!str'): return (string) substr($scalar, 5); case 0 === strpos($scalar, '! '): return intval(self::parseScalar(substr($scalar, 2))); case 0 === strpos($scalar, '!!php/object:'): return unserialize(substr($scalar, 13)); case ctype_digit($scalar): $raw = $scalar; $cast = intval($scalar); return '0' == $scalar[0] ? octdec($scalar) : ((string) $raw == (string) $cast ? $cast : $raw); case in_array(strtolower($scalar), $trueValues): return true; case in_array(strtolower($scalar), $falseValues): return false; case is_numeric($scalar): return '0x' == $scalar[0] . $scalar[1] ? hexdec($scalar) : floatval($scalar); case 0 == strcasecmp($scalar, '.inf'): case 0 == strcasecmp($scalar, '.NaN'): return -log(0); case 0 == strcasecmp($scalar, '-.inf'): return log(0); case preg_match('/^(-|\\+)?[0-9,]+(\\.[0-9]+)?$/', $scalar): return floatval(str_replace(',', '', $scalar)); case preg_match(self::getTimestampRegex(), $scalar): return strtotime($scalar); default: return (string) $scalar; } }