[前][次][番号順一覧][スレッド一覧]

ruby-changes:16593

From: tenderlove <ko1@a...>
Date: Fri, 9 Jul 2010 01:02:47 +0900 (JST)
Subject: [ruby-changes:16593] Ruby:r28584 (trunk): * ext/psych/emitter.c (line_width, set_line_width): preferred line may

tenderlove	2010-07-09 01:02:26 +0900 (Fri, 09 Jul 2010)

  New Revision: 28584

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=28584

  Log:
    * ext/psych/emitter.c (line_width, set_line_width): preferred line may
      be set on the emitter.
    * ext/psych/lib/psych/visitors/yaml_tree.rb: ditto
    * test/psych/test_emitter.rb: corresponding tests.

  Modified files:
    trunk/ChangeLog
    trunk/ext/psych/emitter.c
    trunk/ext/psych/lib/psych/visitors/yaml_tree.rb
    trunk/test/psych/test_emitter.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 28583)
+++ ChangeLog	(revision 28584)
@@ -1,3 +1,10 @@
+Fri Jul  9 00:49:46 2010  Aaron Patterson <aaron@t...>
+
+	* ext/psych/emitter.c (line_width, set_line_width): preferred line may
+	  be set on the emitter.
+
+	* test/psych/test_emitter.rb: corresponding tests.
+
 Thu Jul  8 15:47:34 2010  NARUSE, Yui  <naruse@r...>
 
 	* string.c (rb_str_conv_enc_opts): fix infinite loop because
Index: ext/psych/lib/psych/visitors/yaml_tree.rb
===================================================================
--- ext/psych/lib/psych/visitors/yaml_tree.rb	(revision 28583)
+++ ext/psych/lib/psych/visitors/yaml_tree.rb	(revision 28584)
@@ -54,7 +54,7 @@
           version = @options[:version].split('.').map { |x| x.to_i }
         else
           version = [1,1]
-        end if @options[:version]
+        end if @options.key? :version
 
         @emitter.start_document version, [], false
         accept object
Index: ext/psych/emitter.c
===================================================================
--- ext/psych/emitter.c	(revision 28583)
+++ ext/psych/emitter.c	(revision 28584)
@@ -460,6 +460,32 @@
     return INT2NUM(emitter->best_indent);
 }
 
+/* call-seq: emitter.line_width
+ *
+ * Get the preferred line width.
+ */
+static VALUE line_width(VALUE self)
+{
+    yaml_emitter_t * emitter;
+    Data_Get_Struct(self, yaml_emitter_t, emitter);
+
+    return INT2NUM(emitter->best_width);
+}
+
+/* call-seq: emitter.line_width = width
+ *
+ * Set the preferred line with to +width+.
+ */
+static VALUE set_line_width(VALUE self, VALUE width)
+{
+    yaml_emitter_t * emitter;
+    Data_Get_Struct(self, yaml_emitter_t, emitter);
+
+    yaml_emitter_set_width(emitter, NUM2INT(width));
+
+    return width;
+}
+
 void Init_psych_emitter()
 {
     VALUE psych     = rb_define_module("Psych");
@@ -483,6 +509,8 @@
     rb_define_method(cPsychEmitter, "canonical=", set_canonical, 1);
     rb_define_method(cPsychEmitter, "indentation", indentation, 0);
     rb_define_method(cPsychEmitter, "indentation=", set_indentation, 1);
+    rb_define_method(cPsychEmitter, "line_width", line_width, 0);
+    rb_define_method(cPsychEmitter, "line_width=", set_line_width, 1);
 
     id_write = rb_intern("write");
 }
Index: test/psych/test_emitter.rb
===================================================================
--- test/psych/test_emitter.rb	(revision 28583)
+++ test/psych/test_emitter.rb	(revision 28584)
@@ -10,6 +10,12 @@
       @emitter = Psych::Emitter.new @out
     end
 
+    def test_line_width
+      assert_equal 0, @emitter.line_width
+      assert_equal 10, @emitter.line_width = 10
+      assert_equal 10, @emitter.line_width
+    end
+
     def test_set_canonical
       @emitter.canonical = true
       assert_equal true, @emitter.canonical

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]