[macruby-changes] [2182] MacRuby/branches/experimental

source_changes at macosforge.org source_changes at macosforge.org
Mon Aug 3 10:45:59 PDT 2009


Revision: 2182
          http://trac.macosforge.org/projects/ruby/changeset/2182
Author:   pthomson at apple.com
Date:     2009-08-03 10:45:59 -0700 (Mon, 03 Aug 2009)
Log Message:
-----------
Made to_yaml default to taking a QuickEmitter argument. Kind of a hack, but what can you do, right?

Modified Paths:
--------------
    MacRuby/branches/experimental/ext/libyaml/emitter.c
    MacRuby/branches/experimental/ext/libyaml/rubyext.c
    MacRuby/branches/experimental/lib/yaml/rubytypes.rb
    MacRuby/branches/experimental/lib/yaml.rb

Modified: MacRuby/branches/experimental/ext/libyaml/emitter.c
===================================================================
--- MacRuby/branches/experimental/ext/libyaml/emitter.c	2009-08-03 17:45:58 UTC (rev 2181)
+++ MacRuby/branches/experimental/ext/libyaml/emitter.c	2009-08-03 17:45:59 UTC (rev 2182)
@@ -634,7 +634,7 @@
         if (!implicit) {
             if (!yaml_emitter_write_indent(emitter))
                 return 0;
-            if (!yaml_emitter_write_indicator(emitter, "---", 1, 0, 0))
+            if (!yaml_emitter_write_indicator(emitter, "--- ", 1, 1, 0))
                 return 0;
             if (emitter->canonical) {
                 if (!yaml_emitter_write_indent(emitter))

Modified: MacRuby/branches/experimental/ext/libyaml/rubyext.c
===================================================================
--- MacRuby/branches/experimental/ext/libyaml/rubyext.c	2009-08-03 17:45:58 UTC (rev 2181)
+++ MacRuby/branches/experimental/ext/libyaml/rubyext.c	2009-08-03 17:45:59 UTC (rev 2182)
@@ -224,7 +224,7 @@
 	// TODO: stop ignoring the style
 	yaml_char_t *tag = (yaml_char_t*)RSTRING_PTR(taguri);
 	yaml_char_t *val = (yaml_char_t*)RSTRING_PTR(str);
-	int scalID = yaml_document_add_scalar(document, tag, val, RSTRING_LEN(str), rb_symbol_to_scalar_style(style));
+	int scalID = yaml_document_add_scalar(document, NULL, val, RSTRING_LEN(str), rb_symbol_to_scalar_style(style));
 	return rb_yaml_node_new(yaml_document_get_node(document, scalID), scalID, self);
 }
 

Modified: MacRuby/branches/experimental/lib/yaml/rubytypes.rb
===================================================================
--- MacRuby/branches/experimental/lib/yaml/rubytypes.rb	2009-08-03 17:45:58 UTC (rev 2181)
+++ MacRuby/branches/experimental/lib/yaml/rubytypes.rb	2009-08-03 17:45:59 UTC (rev 2182)
@@ -28,7 +28,7 @@
     self.instance_variables.sort
   end
   
-  def to_yaml(out)
+  def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
     if out.respond_to? :map
       out.map(taguri, to_yaml_style) do |map|
         to_yaml_properties.each do |m|
@@ -47,14 +47,14 @@
 class String
   yaml_as "tag:yaml.org,2002:str"
   
-  def to_yaml(out)
+  def to_yaml(out = YAML::LibYAML::LibYAML::QuickEmitter.new)
     out.scalar(taguri, self, self =~ /^:/ ? :quote2 : nil)
   end
 end
 
 class Exception
   yaml_as "tag:ruby.yaml.org,2002:exception"
-  def to_yaml(out)
+  def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
     out.map(taguri, to_yaml_style) do |map|
       map.add('message', message)
     end
@@ -64,7 +64,7 @@
 
 class Array
   yaml_as "tag:yaml.org,2002:seq"
-  def to_yaml(out)
+  def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
     out.seq(taguri, to_yaml_style) do |seq|
       each { |i| seq.add(i) }
     end
@@ -73,7 +73,7 @@
 
 class Hash
   yaml_as "tag:yaml.org,2002:map"
-  def to_yaml(out)
+  def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
     out.map(taguri, to_yaml_style) do |map| 
       each { |k,v| map.add(k,v) }
     end
@@ -86,7 +86,7 @@
     val.to_i
   end
   
-	def to_yaml(out)
+	def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
     out.scalar( "tag:yaml.org,2002:int", self.to_s, :plain )
 	end
 end
@@ -98,7 +98,7 @@
     val.to_f
   end
   
-  def to_yaml(out)
+  def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
     str = self.to_s
     if str == "Infinity"
       str = ".Inf"
@@ -116,14 +116,14 @@
   
   def self.yaml_new(val); val[1..-1].to_sym; end
   
-  def to_yaml(out)
-    out.scalar(taguri, self.to_s[1..-1], :plain)
+  def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
+    out.scalar(taguri, self.inspect, :plain)
   end
 end
 
 class Regexp
   yaml_as "tag:ruby.yaml.org,2002:regexp"
-  def to_yaml(out)
+  def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
     out.scalar(taguri, self.inspect, :plain)
     super(out)
 	end
@@ -134,7 +134,7 @@
   
   def self.yaml_new(val); nil; end
   
-	def to_yaml(out)
+	def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
     out.scalar(taguri, "", :plain)
 	end
 end
@@ -144,7 +144,7 @@
   
   def self.yaml_new(val); true; end
   
-  def to_yaml(out)
+  def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
     out.scalar(taguri, "true", :plain)
   end
 end
@@ -154,7 +154,7 @@
   
   def self.yaml_new(val); false; end
   
-  def to_yaml(out)
+  def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
     out.scalar(taguri, "false", :plain)
   end
 end

Modified: MacRuby/branches/experimental/lib/yaml.rb
===================================================================
--- MacRuby/branches/experimental/lib/yaml.rb	2009-08-03 17:45:58 UTC (rev 2181)
+++ MacRuby/branches/experimental/lib/yaml.rb	2009-08-03 17:45:59 UTC (rev 2182)
@@ -41,7 +41,28 @@
   def YAML.parse_file(path)
     File.open(path) { |f| parse(f) }
   end
+end
+
+class YAML::LibYAML::QuickEmitter < YAML::LibYAML::Emitter
+  def initialize
+    super
+    @doc = Document.new
+  end
   
+  def seq(taguri, style, &block)
+    @doc.seq(taguri, style) { |o| block[o] }
+    self.dump(@doc)
+  end
+  
+  def scalar(*args)
+    @doc.scalar(*args)
+    self.dump(@doc)
+  end
+  
+  def map(taguri, style, &block)
+    @doc.map(taguri, style) { |o| block[o] }
+    self.dump(@doc)
+  end
 end
 
 module Kernel
@@ -50,6 +71,8 @@
   end
 end
 
+
+
 =begin
 
 require 'stringio'
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090803/988cd4a8/attachment-0001.html>


More information about the macruby-changes mailing list