Re: Top level block scalar without indentation
Oren Ben-Kiki <[email protected]>
| Newsgroups | gmane.text.yaml.general |
|---|---|
| Message-ID | <CADJiDhsSOJDYScr_WGBT4czOUbLHkPhq6bniBSq1L8BSF2Rw3g@mail.gmail.com> |
Well, example 9.5 is pretty explicit in what the spec says. Note that the auto-detect does not return 0, it returns at least 1, but since we start with -1 this results with an overall 0 indentation (since production 207 uses -1 and not 0). The same logic holds for both of your samples; example 9.3 shows an unindented plain at the top level. Oren. On Sat, Apr 13, 2013 at 2:10 PM, KOSEKI Kengo <[email protected]> wrote: > Hi, > > I noticed that LibYAML doesn't parse block scalar without indentation. > > Sample: 1 > --- > XXX > YYY > ZZZ > > Sample: 2 > --- | > XXX > YYY > ZZZ > > I expected that these samples would be parsed like this: > > [{"Sample": 1}, "XXX YYY ZZZ"] > [{"Sample": 2}, "XXX\nYYY\nZZZ\n"] > > LibYAML can parse Sample 1 but not Sample 2. > > $ ./run-parser Sample1.yaml > [1] Parsing 'Sample1.yaml': SUCCESS (11 events) > > $ ./run-parser Sample2.yaml > [1] Parsing 'Sample2.yaml': FAILURE (10 events) > > PyYAML returned error. > > expected '<document start>', but found '<scalar>' > > > I checked some implementations. The results are: > > Syck (YAML 1.0) - Ruby > Sample1 ... PASS > Sample2 ... PASS > > YAML.pm (YAML 1.0) - Perl > Sample1 ... FAIL > Sample2 ... PASS > > PyYAML (YAML 1.1) - Python / LibYAML > Sample1 ... PASS > Sample2 ... FAIL > > Psych (YAML 1.1) - Ruby / LibYAML > Sample1 ... PASS > Sample2 ... FAIL > > SnakeYAML (YAML 1.1) - Java / based on LibYAML > Sample1 ... PASS > Sample2 ... FAIL > > JS-YAML (YAML 1.2) - JavaScript > Sample1 ... PASS > Sample2 ... PASS > > Yamerl (YAML 1.2) - Erlang > Sample1 ... PASS > Sample2 ... PASS > > > My questions are: > > (1) Which parsers are implemented properly, at this point? > (2) Is there possibility that LibYAML support Sample2? > At YAML 1.1 trunk or future 1.2 branch? > > > In YAML 1.0 spec, Example 4.21 says: > > --- | > Usually top level nodes are not indented. > > In YAML 1.2 spec, Example 9.5 says: > > %YAML 1.2 > --- | > %!PS-Adobe-2.0 > ... > > %YAML 1.2 > --- > !!str "%!PS-Adobe-2.0\n" > ... > > I couldn't find an example like these in the YAML 1.1 spec. > It may be determined by [161] detect(m) being able to return 0 or not. > > > I found this message. > > * http://osdir.com/ml/text.yaml.general/2008-07/msg00001.html > > > The spec requires that continuation lines of a flow scalar are indented > > with at least one space. LibYAML relaxes this rule by allowing > > multi-line flow scalars not to be indented, > > So I realized that the Sample1 result was came from relaxing > the spec. But how about the block scalar, Sample 2? > > > I think this notation is important, because this enable to append > metadata to the plain text. > > An email will be represented like this. > > Date: 2013-04-13 20:10:53+09:00 > Subject: Top level block scalar without indentation > From: [email protected] > To: [email protected] > --- | > Hi, > I noticed that ... > > > Using template engine to generate HTML. > > title: YAML block scalar > template: blog > published: 2013-04-13 > --- | > <article> > <h1>xxxxxx</h1> > <pre> > Here must > be written in > multi lines. > </pre> > </article> > > > Best regards, > > -- > koseki > > > ------------------------------------------------------------------------------ > Precog is a next-generation analytics platform capable of advanced > analytics on semi-structured data. The platform includes APIs for building > apps and a phenomenal toolset for data science. Developers can use > our toolset for easy data analysis & visualization. Get a free account! > http://www2.precog.com/precogplatform/slashdotnewsletter > _______________________________________________ > Yaml-core mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/yaml-core > ------------------------------------------------------------------------------ Precog is a next-generation analytics platform capable of advanced analytics on semi-structured data. The platform includes APIs for building apps and a phenomenal toolset for data science. Developers can use our toolset for easy data analysis & visualization. Get a free account! http://www2.precog.com/precogplatform/slashdotnewsletter _______________________________________________ Yaml-core mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/yaml-core