[Tickets #7843] yaml loader fails if string contain curly brackets
bugs at horde.org
bugs at horde.org
Tue Jan 13 15:27:47 UTC 2009
DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED.
Ticket URL: http://bugs.horde.org/ticket/7843
------------------------------------------------------------------------------
Ticket | 7843
Created By | eero.afheurlin at nemein.com
Summary | yaml loader fails if string contain curly brackets
Queue | Horde Framework Packages
Version | FRAMEWORK_3
Type | Bug
State | Unconfirmed
Priority | 2. Medium
Milestone |
Patch |
Owners |
------------------------------------------------------------------------------
eero.afheurlin at nemein.com (2009-01-13 10:27) wrote:
Consider the following yaml snippet
---<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>---
More information about the bugs
mailing list