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

ruby-changes:8092

From: xibbar <ko1@a...>
Date: Mon, 29 Sep 2008 00:42:31 +0900 (JST)
Subject: [ruby-changes:8092] Ruby:r19617 (trunk): * lib/cgi/html.rb (CGI::HtmlExtension::{radio_group, checkbox_group}):

xibbar	2008-09-29 00:41:12 +0900 (Mon, 29 Sep 2008)

  New Revision: 19617

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

  Log:
    * lib/cgi/html.rb (CGI::HtmlExtension::{radio_group, checkbox_group}):
    can specify the false as checked or selected value.
    [ruby-core:18306], [ruby-core:18307]
    
    * test/cgi/test_cgi_tag_helper.rb: add a test.

  Modified files:
    trunk/ChangeLog
    trunk/lib/cgi/html.rb
    trunk/test/cgi/test_cgi_tag_helper.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 19616)
+++ ChangeLog	(revision 19617)
@@ -1,3 +1,11 @@
+Mon Sep 29 00:30:20 2008  Takeyuki Fujioka  <xibbar@r...>
+
+	* lib/cgi/html.rb (CGI::HtmlExtension::{radio_group, checkbox_group}):
+	can specify the false as checked or selected value.
+	[ruby-core:18306], [ruby-core:18307]
+
+	* test/cgi/test_cgi_tag_helper.rb: add a test.
+
 Sun Sep 28 23:08:38 2008  Takeyuki Fujioka  <xibbar@r...>
 
 	* lib/cgi/html.rb (CGI::HtmlExtension::popup_menu):
Index: lib/cgi/html.rb
===================================================================
--- lib/cgi/html.rb	(revision 19616)
+++ lib/cgi/html.rb	(revision 19617)
@@ -248,12 +248,12 @@
         if value.kind_of?(String)
           checkbox(name, value) + value
         else
-          if value[value.size - 1] == true
-            checkbox(name, value[0], true) +
-            value[value.size - 2]
+          if value[-1] == true || value[-1] == false
+            checkbox(name, value[0],  value[-1]) +
+            value[-2]
           else
             checkbox(name, value[0]) +
-            value[value.size - 1]
+            value[-1]
           end
         end
       }.join
@@ -703,12 +703,12 @@
         if value.kind_of?(String)
           radio_button(name, value) + value
         else
-          if value[value.size - 1] == true
-            radio_button(name, value[0], true) +
-            value[value.size - 2]
+          if value[-1] == true || value[-1] == false
+            radio_button(name, value[0],  value[-1]) +
+            value[-2]
           else
             radio_button(name, value[0]) +
-            value[value.size - 1]
+            value[-1]
           end
         end
       }.join
Index: test/cgi/test_cgi_tag_helper.rb
===================================================================
--- test/cgi/test_cgi_tag_helper.rb	(revision 19616)
+++ test/cgi/test_cgi_tag_helper.rb	(revision 19617)
@@ -313,6 +313,17 @@
     assert_match(/^<INPUT .*VALUE="aa".*>bb<INPUT .*VALUE="cc".*>dd$/,str)
     assert_match(/^<INPUT .*TYPE="radio".*>bb<INPUT .*TYPE="radio".*>dd$/,str)
     assert_match(/^<INPUT .*NAME="foo".*>bb<INPUT .*NAME="foo".*>dd$/,str)
+    str=cgi.checkbox_group("foo",["aa","bb"],["cc","dd",true])
+    assert_match(/^<INPUT .*VALUE="aa".*>bb<INPUT .*VALUE="cc".*>dd$/,str)
+    assert_match(/^<INPUT .*TYPE="checkbox".*>bb<INPUT .*TYPE="checkbox".*>dd$/,str)
+    assert_match(/^<INPUT .*NAME="foo".*>bb<INPUT .*NAME="foo".*>dd$/,str)
+    assert_match(/^<INPUT .*>bb<INPUT .*CHECKED.*>dd$/,str)
+    if RUBY_VERSION>="1.9"
+      str=cgi.radio_group("foo",["aa","bb"],["cc","dd",false])
+      assert_match(/^<INPUT .*VALUE="aa".*>bb<INPUT .*VALUE="cc".*>dd$/,str)
+      assert_match(/^<INPUT .*TYPE="radio".*>bb<INPUT .*TYPE="radio".*>dd$/,str)
+      assert_match(/^<INPUT .*NAME="foo".*>bb<INPUT .*NAME="foo".*>dd$/,str)
+    end
   end
   
 =begin

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

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