source: spip-zone/_plugins_/yaml/inc/yaml.php @ 31565

Last change on this file since 31565 was 31565, checked in by fil@…, 12 years ago

plugin YAML, base pour l'instant sur sfYaml http://components.symfony-project.org/yaml/

File size: 1015 bytes
Line 
1<?php
2
3# wrapper de la class sfYAML pour SPIP
4#
5# fournit deux fonctions pour YAML,
6# analogues a json_encode() et json_decode
7#
8# Regle de dev: ne pas se rendre dependant de la lib sous-jacente
9
10
11/*
12 * Encode n'importe quelle structure en yaml
13 * @param $struct
14 * @return string
15 */
16function yaml_encode($struct, $opt = array()) {
17        require_once _DIR_PLUGIN_YAML.'sfyaml/sfYaml.php';
18        require_once _DIR_PLUGIN_YAML.'sfyaml/sfYamlDumper.php';
19        $opt = array_merge(
20                array(
21                        'inline' => 2
22                ), $opt);
23        $yaml = new sfYamlDumper();
24        return $yaml->dump($struct, $opt['inline']);
25}
26
27/*
28 * Decode un texte yaml, renvoie la structure
29 * @param string $input
30 */
31function yaml_decode($input) {
32        require_once _DIR_PLUGIN_YAML.'sfyaml/sfYaml.php';
33        require_once _DIR_PLUGIN_YAML.'sfyaml/sfYamlParser.php';
34
35        $yaml = new sfYamlParser();
36
37        try
38        {
39          $ret = $yaml->parse($input);
40        }
41        catch (Exception $e)
42        {
43                throw new InvalidArgumentException(sprintf('Unable to parse string: %s', $e->getMessage()));
44        }
45
46        return $ret;
47}
48
49?>
Note: See TracBrowser for help on using the repository browser.