Re: The same tag for different kinds

Andrey Somov <[email protected]> Thu, 10 Mar 2016 22:22:39 +0100
Newsgroups gmane.text.yaml.general
Message-ID <CALbkv0cYEzCETspM8g1htKJKhog6RsDfdE6burexmYepdwcEpw@mail.gmail.com>
On Thu, Mar 10, 2016 at 8:21 PM, Oren Ben-Kiki <[email protected]> wrote:

> On Thu, Mar 10, 2016 at 7:10 PM, Andrey Somov <[email protected]>
> wrote:
>
>> The tag itself does not give any indication which node kind it needs.
>>
>
> What do you mean? The spec requires certain things from each tag, this is
> one.
>

I mean that !foo is not related to any kind. It can be used with any node.


>
>> Or "each tag must specify the expected node kind" must be read as "each
>> tag can only be applied to the node kind it is used with" ?
>>
>
> Yes.
>
>
>> My question is: should the parser be prepared to get a custom tag for
>> different kinds ?
>> Should the parser allow to configure to call different custom
>> implementations for different kinds for the same tag ?
>>
>
> I'm assuming you are misusing the word parser here. A YAML processor that
> constructs native application data needs to (1) associate tags with all
> nodes and (2) map the tags to native data types and (3) then construct them.
>
> There's no requirement that different tags map to different native data
> types (e.g., in JavaScript, !!int and !!float map to the same native number
> type).
>
> YAML requires that tags-that-are-associated-with-scalar-nodes be different
> than tags-that-are-associated-with-map-nodes which must be different than
> tags-that-are-associated-with-sequence-nodes.
>

I think this is the answer to my question. It means that users have to
provide a separate implementation for every kind for the same tag.

(1) associate tags with all nodes  => this is done by the processor
 (2) map the tags to native data types => this has to be implemented by
users
 (3) then construct them => this has to be implemented by users


> BTW, since tags are URIs, one can do things like !!foo#scalar vs.
> !!foo#map vs. !!foo#seq to communicate they are related. Or use `/` or `::`
> or `-` or whatever.
>
> Oren.
>

What should the processor do in this case ?

%YAML 1.1
---
scalar: !foo#map bar
map: !foo#scalar {a: 1}

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140

_______________________________________________
Yaml-core mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/yaml-core