[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