Re: Yayson (proposal for a YAML presentation embedded within JSON for browser clients)

Ingy dot Net <[email protected]>
Newsgroups gmane.text.yaml.general
Message-ID <[email protected]>
On Mon, Jun 14, 2010 at 7:42 PM, William Spitzak <[email protected]> wrote:

>
>
> Ingy dot Net wrote:
>
>     It is not clear how you add a tag or anchor to a non-quoted object
>>    such as a number, however. Perhaps it is ok if quotes are required,
>>    or maybe I'm missing something.
>>
>>
>> This is an interesting question. My take is that tagging is only applied
>> to strings. Since each and every tag is resolved by a function, it seems a
>> fair assumption to make.
>>
>> I realize that there is a distinction in YAML betwixt:
>>
>> ---
>> - !foo "3"
>> - !foo 3
>>
>> But I don't see a constructor making use of that distinction.
>>
>> What do you think?
>>
>
> It seems ok. Certainly whether a string is quoted or not is used by YAML
> parsers to determine type, but that is only when the tag is missing. I think
> if there is a tag then it is ok if the value is always quoted. It does mean
> that you cannot add more keywords than JSON supports as unquoted constants
> to YAML but I don't think that is being allowed anyway?
>

Right. The serialization needs to be 100% JSON.


>
>  We need to support a top level '%TAG' and '%JSYNC' syntax:
>>
>> %YAML 1.2
>> %TAG ! tag:xyz.com <http://xyz.com>,2010:
>> %TAG !abc! tag:abc.net <http://abc.net>,2010:
>>
>> --- !thing
>> this: !abc!widget [2, 4]
>>
>> Here is my strawman...
>>
>> There are two kinds of top level in JSYNC: map and sequence. Map seems
>> easier:
>>
>> {
>>  "%": "JSYNC 1.0\nTAG ! tag:xyz.com <http://xyz.com>,2010:\nTAG !abc!
>> tag:abc.net <http://abc.net>,2010:",
>>
>>  "!": "thing",
>>  "this": ["!abc!widget", 2, 4]
>> }
>>
>> Here is a similar doc as a top level sequence:
>>
>> [
>>  "%JSYNC 1.0\n%TAG ! tag:xyz.com <http://xyz.com>,2010:\n%TAG !abc! tag:
>> abc.net <http://abc.net>,2010:\n!thing",
>>  ["!abc!widget", 2, 4]
>> ]
>>
>
> I would put each '%' into it's own item.
>
> I think of YAML, if you include the "---" dividers, as having a top-level
> list naturally. So perhaps the conversion of YAML to JSON is to turn it
> always into a list. Back-conversion will turn that top-level list into ---
> divided items.


Interesting thoughts. Let's let it brew for a while.


>
>  Good starting list. I would want to escape <SPACE>, !, #, $, %, & because
>> then you could tell a JSON encoder to sort mapping keys (if the option is
>> available) and always get the JSYNC fields at the top of the mapping. Not
>> only is this better visually; it might be _necessary_ if we wanted to do
>> streaming JSYNC libraries.
>>
>
> Okay we have the following list, imho:
>
> DEFINATELY NEED QUOTING:
>  !, #, %, &, *
>
> MAY NEED QUOTING:
>  @ (reserved for future use by YAML)
>  space (I'm not sure why)
>

because space sorts before '!'. The first printable chars are:

     <space> ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @

I was thinking it would be nice if the JSYNCisms key sorted above the normal
keys.


>  " and ' (also used by YAML at the start of values)
>

" will always be \"

It is required to be valid JSON.


>
> NOT QUOTED:
>  +, -, 0-9 (for numbers)
>  A-Z, a-z, _ (valid identifiers in most languages)
>  All Unicode > 0x7f (match the letters, no UTF-8 decoding needed)
>  / and \ (for . and .. filenames)
>  "nothing": a string of only periods is unchanged (for . and .. filenames)
>

Agreed.


>
> UNKNOWN (but I would say not quoted):
>  C0 control characters such as newline
>  $, (, ), comma, -, :, ;, <, =, >, ?, [, ], ^, `, {, |, }, ~
>
>
>
>
>
>
>> As an aside, I think there is about a year of time where you can declare
>> new technology like JSYNC to be alpha, and subject to
>> non-backwards-compatible change. I personally think it is healthy, and
>> avoids things like mandatory tabs in Makefiles!
>>
>>
>>     > I have updated the http://jsync.org example to reflect this.
>>
>>    This is great and if this question comes up again people should be
>>    directed to this web site. Name & syntax are chosen.
>>
>>
>> Thanks!
>>
>> The next steps are to write up a syntax spec, then an API spec, then
>> create an implementation or two, then write an implementation guide.
>>
>> Cheers, Ingy
>>
>

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo

_______________________________________________
Yaml-core mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/yaml-core
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.