summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--lib/yaml/rubytypes.rb4
-rw-r--r--test/yaml/test_yaml.rb11
3 files changed, 19 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 5f88df10ea..37d63eb67c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Sat Dec 13 03:09:14 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb: anonymous struct fix. [ruby-core:01946]
+
+ * test/yaml/test_yaml.rb: add test.
+
Fri Dec 12 22:36:44 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* lib/csv.rb: add Cell#to_str and Cell#to_s for /.../ =~ aCell,
diff --git a/lib/yaml/rubytypes.rb b/lib/yaml/rubytypes.rb
index fed4370271..f718df9b9f 100644
--- a/lib/yaml/rubytypes.rb
+++ b/lib/yaml/rubytypes.rb
@@ -155,8 +155,8 @@ class Struct
#
# Basic struct is passed as a YAML map
#
- struct_name = self.class.name.gsub( "Struct:", "" )
- out.map( "!ruby/struct#{struct_name}" ) { |map|
+ struct_name = self.class.name.gsub( "Struct::", "" )
+ out.map( "!ruby/struct:#{struct_name}" ) { |map|
self.members.each { |m|
map.add( m, self[m] )
}
diff --git a/test/yaml/test_yaml.rb b/test/yaml/test_yaml.rb
index cfb6407c29..35bb7c5f73 100644
--- a/test/yaml/test_yaml.rb
+++ b/test/yaml/test_yaml.rb
@@ -4,6 +4,11 @@
require 'test/unit'
require 'yaml'
+# [ruby-core:01946]
+module YAML_Tests
+ StructTest = Struct::new( :c )
+end
+
class YAML_Unit_Tests < Test::Unit::TestCase
#
# Convert between YAML and the object to verify correct parsing and
@@ -1058,6 +1063,12 @@ EOY
isbn: None
EOY
)
+
+ assert_to_yaml( YAML_Tests::StructTest.new( 123 ), <<EOY )
+--- !ruby/struct:Test::StructTest
+c: 123
+EOY
+
end
def test_emitting_indicators