Summary | yaml loader fails if string contain curly brackets |
Queue | Horde Framework Packages |
Queue Version | Git master |
Type | Bug |
State | Assigned |
Priority | 2. Medium |
Owners | chuck (at) horde (dot) org, mike (at) naberezny (dot) com |
Requester | eero.afheurlin (at) nemein (dot) com |
Created | 01/13/2009 (5965 days ago) |
Due | |
Updated | 09/24/2010 (5346 days ago) |
Assigned | 01/13/2009 (5965 days ago) |
Resolved | |
Milestone | |
Patch | No |
on the old spyc at least (and the last time I looked you used the same
code for parsing).
syck does not care about quoting or such, it "just works"
Assigned to Mike Naberezny
State ⇒ Assigned
Priority ⇒ 2. Medium
Type ⇒ Bug
Summary ⇒ yaml loader fails if string contain curly brackets
Queue ⇒ Horde Framework Packages
Milestone ⇒
Patch ⇒ No
State ⇒ Unconfirmed
---<snip>---
routes:
index:
controller: net_nemein_news_controllers_index
action: latest
route: /
content_entry_point: nnn-show-latest
allowed_methods:
- OPTIONS
- GET
- PROPFIND
latest:
controller: net_nemein_news_controllers_index
action: latest
route: "/latest/{$int:number}/"
content_entry_point: nnn-show-latest
rss:
controller: net_nemein_news_controllers_index
action: latest
route: /rss.xml
mimetype: text/xml
template_entry_point: nnn-show-rss
show:
controller: net_nemein_news_controllers_article
action: show
route: "/{$name}/"
content_entry_point: nnn-show-article
edit:
controller: net_nemein_news_controllers_article
action: edit
route: "/{$name}/edit"
content_entry_point: nnn-edit-article
---<snap>---
This has the same bug as spyck in the parser (supposedly) thinking
that the curly brackets inside strings are inline maps
syck parses this correctly even when the routes with curly brackets
are not quoted.
tested on "PHP 5.2.0-8+etch11 (cli)" using the following code and
horde/Yaml-1.0.1 via PEAR.
---<snip>---
<?php
error_reporting(E_ALL);
require_once('Horde/Yaml.php');
require_once('Horde/Yaml/Node.php');
require_once('Horde/Yaml/Exception.php');
require_once('Horde/Yaml/Loader.php');
$path = realpath(dirname(__FILE__)) . '/test.yml';
echo "path={$path}\n";
$array = Horde_Yaml::load($path);
if ( !( isset($array['routes'])
&& isset($array['routes']['latest'])
&& isset($array['routes']['latest']['route'])
&& is_string($array['routes']['latest']['route']))
|| !( isset($array['routes'])
&& isset($array['routes']['show'])
&& isset($array['routes']['show']['route'])
&& is_string($array['routes']['show']['route']))
)
{
echo "ERROR: Invalidly parsed route\n";
var_dump($array);
exit(1);
}
echo "No errors detected";
?>
---<snip>---