From: why t. l. s. <yam...@wh...> - 2003-01-08 21:58:42
|
A whole lot of good words to all of you. YAML.rb 0.49 is out and we're right on the heels of 0.50. Consider this something of an unstable 0.50. I may release a few 0.49-1, 0.49-2 releases before 0.50 to ensure that 0.50 is a rock. YAML.rb is a data serialization language that is simple to learn and very readable. If you want a good taste of what YAML syntax looks like, try the Cookbook [http://yaml4r.sf.net/cookbook/]. As promised [see http://www.ruby-talk.org/55669], the tokenizer and preprocessor have been rewritten. We're getting speedier all the time. --! YAML.rb USERS PLEASE NOTE !-- This release is current with the spec and includes a number of changes that will appear in the next version of the spec. These changes may cause some of your YAML to load differently or not at all. Here's what you need to know: - The directive indicator is now '%' rather than '#'. The '#' character is being used exclusively for comments now. --- #YAML:1.0 !!software name: yaml.rb version: 0.49 url: http://yaml4r.sf.net/ The above document will parse the directive as a comment. In fact, the whole line will be taken as a comment, neglecting your private type transfer. The above document will be loaded as a ruby Hash. --- %YAML:1.0 !!software name: yaml.rb version: 0.49 url: http://yaml4r.sf.net/ The above document will be loaded correctly. You'll receive a typed 'software' hash. - Dashes are now counted as indentation. The following document is illegal: - test: 1 The mapping and sequence share the same level of indentation above. To fix this problem, indent the mapping another space. - test: 1 This change was made to enforce better readability and to accomodate the new seq-in-map shortcut: test: - 1 - Nils can now be represented by an empty value. --- %YAML:1.0 testing: The above will be loaded as: { 'testing' => nil } - The YAML::Pairs ( '!ruby/pairs' ) type has been renamed to YAML::FlexHash ( '!ruby/flexhash' ). This change prevents confusion with the new YAML builtin collection '!pairs'. The HTML, CHM, and PDF documents have been updated for 0.49 and can be found on the YAML.rb site [http://yaml4r.sf.net/]. _why |
From: why t. l. s. <yam...@wh...> - 2003-01-09 04:51:07
|
Robert Feldt (fe...@ce...) wrote: > > I briefly tried 0.47 and like it. Using it in two projects already. Never > really liked XML... > So good to hear. > Two things though, when I use Yaml for ini files I'd like to be able to > spec an order for map pairs to be serialized in. Obviously Ruby hashes has > no garantuee for this but are there any plans on supporting this? If not > I'll whip something up myself; I really wanna make sure the most important > stuff comes out on top... Was that two things? Here's a few solutions to your dilemma: 1. When using objects, you can specify the ordering of your properties explicitly by defining a `to_yaml_properties' method. >> class Instrument >> attr_accessor :name, :key, :is_woodwind >> def initialize( n, k, ww ) >> @name, @key, @is_woodwind = n, k, ww >> end >> def to_yaml_properties >> [ '@name', '@key', '@is_woodwind' ] >> end >> end >> >> y Instrument.new( 'Alto Saxophone', 'Eb', true ) --- !ruby/object:Instrument name: Alto Saxophone key: Eb is_woodwind: true You can see the properties properly ordered above. 2. The same can't be done for Hashes because the key set isn't predictable. But if the :SortKeys method is called, then the Hash will be sorted with Hash#sort. You could define a singleton `sort' method to sort certain Hashes. >> test = { 'name' => 'Alto Saxophone', 'key' => 'Eb', >> 'is_woodwind' => true } >> def test.sort >> order = [ 'name', 'key', 'is_woodwind' ] >> super { |a,b| order.index( a[0] ) <=> order.index( b[0] ) } >> end >> >> puts test.to_yaml( :SortKeys => true ) name: Alto Saxophone key: Eb is_woodwind: true Alternatively, you could define a singleton `to_a' to sort correctly and skip the :SortKeys option. 3. Finally, the YAML spec now defines an !omap type. This type is an ordered mapping with unique keys. YAML.rb will load this into a Hash-like class. >> o = YAML::Omap.new >> o['name'] = 'Alto Saxophone' >> o['key'] = 'Eb' >> o['is_woodwind'] = true >> y o --- !omap - name: Alto Saxophone - key: Eb - is_woodwind: true Let me know if you remember that second thing. _why |
From: Robert F. <fe...@ce...> - 2003-01-09 07:42:47
|
On Wed, 8 Jan 2003, why the lucky stiff wrote: > > Two things though, when I use Yaml for ini files I'd like to be able to > > spec an order for map pairs to be serialized in. Obviously Ruby hashes has > > no garantuee for this but are there any plans on supporting this? If not > > I'll whip something up myself; I really wanna make sure the most important > > stuff comes out on top... > > Was that two things? > Sorry it was very late. Not sure what the other thing was. I'll get back to you if I remember... ;) > Here's a few solutions to your dilemma: > > 2. The same can't be done for Hashes because the key set isn't > predictable. But if the :SortKeys method is called, then > the Hash will be sorted with Hash#sort. You could define a > singleton `sort' method to sort certain Hashes. > > >> test = { 'name' => 'Alto Saxophone', 'key' => 'Eb', > >> 'is_woodwind' => true } > >> def test.sort > >> order = [ 'name', 'key', 'is_woodwind' ] > >> super { |a,b| order.index( a[0] ) <=> order.index( b[0] ) } > >> end > >> > >> puts test.to_yaml( :SortKeys => true ) > name: Alto Saxophone > key: Eb > is_woodwind: true > > Alternatively, you could define a singleton `to_a' to sort > correctly and skip the :SortKeys option. > That was what I ended up doing: require 'yaml' module SortableToAKeys def key_order=(keys) @__key_order = keys end def to_a ks, out = self.keys, [] (@__key_order + (ks - @__key_order)).each do |key| out << [key, self[key]] if ks.include?(key) end out end end h = {1 => 1, 2=>2} puts h.to_yaml + "\n----" h.extend SortableToAKeys h.key_order = [2, 1] puts h.to_yaml Thanks, Robert |
From: Rich M. <rd...@cf...> - 2003-01-11 22:18:30
|
YAPOD (YAML Ain't POD) is my name for a hypothetical YAML-based format which can be mechanically translated to and from POD. I'd like to know if anyone has already done work in this area. Clues, anyone? If nothing surfaces, I may sketch out a preliminary YAPOD definition and implement a pair of YAPOD filters; that is, Perl scripts that read/write (as ysh does) YAPOD and POD. -r -- email: rd...@cf...; phone: +1 650-873-7841 http://www.cfcl.com/rdm - my home page, resume, etc. http://www.cfcl.com/Meta - The FreeBSD Browser, Meta Project, etc. http://www.ptf.com/dossier - Prime Time Freeware's DOSSIER series http://www.ptf.com/tdc - Prime Time Freeware's Darwin Collection |
From: Oren Ben-K. <or...@be...> - 2003-01-15 12:29:49
|
Rich Morin wrote: > YAPOD (YAML Ain't POD) is my name for a hypothetical > YAML-based format which can be mechanically translated to and > from POD. I'd like to know if anyone has already done work > in this area. Clues, anyone? I don't think anyone tried exactly this angle before. It does seem, however, that we have a recurring need to define some sort of formatted-document-in-yaml format... > If nothing surfaces, I may sketch out a preliminary YAPOD > definition and implement a pair of YAPOD filters; that is, > Perl scripts that read/write (as ysh does) YAPOD and POD. Sounds neat. Have fun, Oren Ben-Kiki |