From: Tim H. <tim...@co...> - 2004-09-12 19:07:21
|
Clark C. Evans wrote: >summary: > Ok. This is an updated "patch" to #11 %TAG proposal, let's call > this #11c, it allows a "handle" to appear by itself, and in this > case an optional default specific is used. Further this allows > !handle! to omit the exclamation marks within the %TAG proposal. > If the default is missing, it is the empty string. > >detail: > The %TAG directive has thre specific formats, > > %TAG ! <prefix-of-no-handle> <default-specific>? > %TAG !! <prefix-of-empty-handle> <default-specific>? > %TAG !<handle>! <prefix-of-handle> <default-specific>? > %TAG <handle> <prefix-of-handle> <default-specific>? > > I'd ditch the alternate spelling <handle> and insist on !<handle>!. The tag notation is pretty close to alphabet soup as is and allowing multiple spellings of the same thing, particularly when one of them (<handle>) is inconsistent with the rest is going to cause confusion. I'm still going back and forth as to whether <default-specific> is needless complexity or important flexibility. Other than that, this may be (marginally) simpler than the alternatives while allowing everyone one enough rope to shoot themselves in their preferred appendage. > By default, there would be two %TAG directives in effect, > > %TAG ! ! > %TAG !! tag:yaml.org,2002: str > > Why bother? It seems simpler to just have ! and !! cook to themselves: %TAG ! ! %TAG !! !! Since the application controls all this anyway, it can make things work and we can move some complexity out of tagging and into the application / schema. Since a 'standard' descriptions will need to supplied anyway, it can just as easily map '!' (or '!!') tagged items to string as it can map NULL tagged items to implicit. Call this #11C1 An even simpler is to have unspecified tags just map to themselves. This might hide errors, but presumably the application / schema will catch them. Call this #11C2. example (adjusted for 11C1/2): --- # from proposal number #11 private: !foo # !foo another: !foo::bar # !foo::bar uri: !tag:foo.com,2004:bar # !tag:foo.com,2004:bar + warning yaml: !!int # !!int handle: !baz!bar # -- error no %TAG for 'baz' (1) or !baz!bar (2) # from wart propoal #4 nulltag: # NULL (a special non-value) # default-tags also-private: ! # ! string: !! # !! empty-handle: !baz! # -- error no %TAG for 'baz' (1) or !baz! ... If one were to provide a some explicit %TAGs %YAML 1.1 %TAG ! tag:yatl.org,2002: wibble %TAG !! tag:cla...@gm...,2004-08: hmm %TAG !baz! http://clarkevans.com/baz/ --- # from proposal number #11 private: !foo # tag:yatl.org,2002:foo another: !foo::bar # tag:yatl.org,2002:foo::bar uri: !tag:foo.com,2004:bar # tag:yatl.org,2002:tag:foo.com,2004:bar yaml: !!int # tag:cla...@gm...,2004-08:int handle: !baz!bar # http://clarkevans.com/baz/bar # from wart propoal #4 nulltag: # NULL (a special non-value) # default-tags also-private: ! # tag:yaml.org,2002:wibble string: !! # tag:cla...@gm...,2004-08:hmm empty-handle: !baz! # http://clarkevans.com/baz/ ... >notes: > This proposal allows but does not mandate that the '!' tag to be > loaded as what ever an application wishes, including a native > string. But this, like the option to do regex-based typing based > on the NULL tag is completely under the application's control. > Of course, we could provide a 'standard' description of this > mechanism together with standard regex mappings to YAML tags > in a separate specification, and encourage implementations to > make this default behavior standard. > > To make the above work, the 'standard' mechanism would also want to treat '!' tagged scalars as tag:yaml.org,2002:str And '!!x" tagged scalars as tag:yaml.org,2002:x. But all of this would be at the application/schema level. This is all just pushing complexity around, but I think that since YAML files want to be human editable, pushing complexity up to the application is good in this case. -tim > > >------------------------------------------------------- >This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170 >Project Admins to receive an Apple iPod Mini FREE for your judgement on >who ports your project to Linux PPC the best. Sponsored by IBM. >Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php >_______________________________________________ >Yaml-core mailing list >Yam...@li... >https://lists.sourceforge.net/lists/listinfo/yaml-core > > > |