[macruby-changes] [2183] MacRuby/branches/experimental/lib

source_changes at macosforge.org source_changes at macosforge.org
Mon Aug 3 10:46:00 PDT 2009


Revision: 2183
          http://trac.macosforge.org/projects/ruby/changeset/2183
Author:   pthomson at apple.com
Date:     2009-08-03 10:46:00 -0700 (Mon, 03 Aug 2009)
Log Message:
-----------
Moved to YAML::quick_emit, in accordance with the Syck API.

Modified Paths:
--------------
    MacRuby/branches/experimental/lib/yaml/rubytypes.rb
    MacRuby/branches/experimental/lib/yaml.rb

Modified: MacRuby/branches/experimental/lib/yaml/rubytypes.rb
===================================================================
--- MacRuby/branches/experimental/lib/yaml/rubytypes.rb	2009-08-03 17:45:59 UTC (rev 2182)
+++ MacRuby/branches/experimental/lib/yaml/rubytypes.rb	2009-08-03 17:46:00 UTC (rev 2183)
@@ -47,47 +47,57 @@
 class String
   yaml_as "tag:yaml.org,2002:str"
   
-  def to_yaml(out = YAML::LibYAML::LibYAML::QuickEmitter.new)
-    out.scalar(taguri, self, self =~ /^:/ ? :quote2 : nil)
+  def to_yaml(doc = nil)
+    YAML::quick_emit(self, doc) do |out|
+      out.scalar(taguri, self, self =~ /^:/ ? :quote2 : nil)
+    end
   end
 end
 
 class Exception
   yaml_as "tag:ruby.yaml.org,2002:exception"
-  def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
-    out.map(taguri, to_yaml_style) do |map|
-      map.add('message', message)
+  def to_yaml(doc = nil)
+    YAML::quick_emit(self, doc) do |out|
+      out.map(taguri, to_yaml_style) do |map|
+        map.add('message', message)
+      end
     end
-    super(out)
   end
 end
 
 class Array
   yaml_as "tag:yaml.org,2002:seq"
-  def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
-    out.seq(taguri, to_yaml_style) do |seq|
-      each { |i| seq.add(i) }
+  def to_yaml(doc = nil)
+    YAML::quick_emit(self, doc) do |out|
+      out.seq(taguri, to_yaml_style) do |seq|
+        each { |i| seq.add(i) }
+      end
     end
   end
 end
 
 class Hash
   yaml_as "tag:yaml.org,2002:map"
-  def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
-    out.map(taguri, to_yaml_style) do |map| 
-      each { |k,v| map.add(k,v) }
+  def to_yaml(doc = nil)
+    YAML::quick_emit(self, doc) do |out|
+      out.map(taguri, to_yaml_style) do |map| 
+        each { |k,v| map.add(k,v) }
+      end
     end
   end
 end
 
 class Integer
   yaml_as "tag:yaml.org,2002:int"
+  
   def Integer.yaml_new(val)
     val.to_i
   end
   
-	def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
-    out.scalar( "tag:yaml.org,2002:int", self.to_s, :plain )
+	def to_yaml(doc = nil)
+	  YAML::quick_emit(self, doc) do |out|
+      out.scalar( "tag:yaml.org,2002:int", self.to_s, :plain )
+    end
 	end
 end
 
@@ -98,7 +108,7 @@
     val.to_f
   end
   
-  def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
+  def to_yaml(doc = nil)
     str = self.to_s
     if str == "Infinity"
       str = ".Inf"
@@ -107,7 +117,9 @@
     elsif str == "NaN"
       str = ".NaN"
     end
-    out.scalar("tag:yaml.org,2002:float", str, :plain)
+    YAML::quick_emit(self, doc) do |out|
+      out.scalar("tag:yaml.org,2002:float", str, :plain)
+    end
   end
 end
 
@@ -116,16 +128,19 @@
   
   def self.yaml_new(val); val[1..-1].to_sym; end
   
-  def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
-    out.scalar(taguri, self.inspect, :plain)
+  def to_yaml(doc = nil)
+    YAML::quick_emit(self, doc) do |out|
+      out.scalar(taguri, self.inspect, :plain)
+    end
   end
 end
 
 class Regexp
   yaml_as "tag:ruby.yaml.org,2002:regexp"
-  def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
-    out.scalar(taguri, self.inspect, :plain)
-    super(out)
+  def to_yaml(doc = nil)
+    YAML::quick_emit(self, doc) do |out|
+      out.scalar(taguri, self.inspect, :plain)
+    end
 	end
 end
 
@@ -134,8 +149,10 @@
   
   def self.yaml_new(val); nil; end
   
-	def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
-    out.scalar(taguri, "", :plain)
+	def to_yaml(doc = nil)
+	  YAML::quick_emit(self, doc) do |out|
+      out.scalar(taguri, "", :plain)
+    end
 	end
 end
 
@@ -144,8 +161,10 @@
   
   def self.yaml_new(val); true; end
   
-  def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
-    out.scalar(taguri, "true", :plain)
+  def to_yaml(doc = nil)
+    YAML::quick_emit(self, doc) do |out|
+      out.scalar(taguri, "true", :plain)
+    end
   end
 end
 
@@ -154,8 +173,10 @@
   
   def self.yaml_new(val); false; end
   
-  def to_yaml(out = YAML::LibYAML::QuickEmitter.new)
-    out.scalar(taguri, "false", :plain)
+  def to_yaml(doc = nil)
+    YAML::quick_emit(self, doc) do |out|
+      out.scalar(taguri, "false", :plain)
+    end
   end
 end
 

Modified: MacRuby/branches/experimental/lib/yaml.rb
===================================================================
--- MacRuby/branches/experimental/lib/yaml.rb	2009-08-03 17:45:59 UTC (rev 2182)
+++ MacRuby/branches/experimental/lib/yaml.rb	2009-08-03 17:46:00 UTC (rev 2183)
@@ -9,6 +9,28 @@
 require 'libyaml'
 require 'yaml/rubytypes'
 
+class YAML::LibYAML::QuickEmitter < YAML::LibYAML::Emitter
+  def initialize
+    super
+    @doc = YAML::LibYAML::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 YAML
   
   def YAML.parser
@@ -41,28 +63,11 @@
   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)
+  def YAML.quick_emit(obj, out=nil, &block)
+    out ||= YAML::LibYAML::QuickEmitter.new
+    block[out]
   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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090803/4dc1317c/attachment-0001.html>


More information about the macruby-changes mailing list