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

ruby-changes:25761

From: nobu <ko1@a...>
Date: Fri, 23 Nov 2012 17:32:14 +0900 (JST)
Subject: [ruby-changes:25761] nobu:r37818 (trunk): ruby.c: wrap descriptions

nobu	2012-11-23 17:31:57 +0900 (Fri, 23 Nov 2012)

  New Revision: 37818

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

  Log:
    ruby.c: wrap descriptions
    
    * ruby.c (usage): wrap description lines if options are too long.

  Modified files:
    trunk/ChangeLog
    trunk/ruby.c
    trunk/test/ruby/test_rubyoptions.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 37817)
+++ ChangeLog	(revision 37818)
@@ -1,3 +1,7 @@
+Fri Nov 23 17:31:54 2012  Nobuyoshi Nakada  <nobu@r...>
+
+	* ruby.c (usage): wrap description lines if options are too long.
+
 Fri Nov 23 11:13:46 2012  Nobuyoshi Nakada  <nobu@r...>
 
 	* test/ruby/test_rubyoptions.rb (TestRubyOptions#test_usage2): refine
Index: ruby.c
===================================================================
--- ruby.c	(revision 37817)
+++ ruby.c	(revision 37818)
@@ -172,10 +172,10 @@
     };
     static const struct message help_msg[] = {
 	M("--copyright",                   "", "print the copyright"),
-	M("--enable=feature[,...]",        "", "enable features"),
-	M("--disable=feature[,...]",       "", "disable features"),
-	M("--internal-encoding=encoding",  "", "specify the default internal character encoding"),
-	M("--external-encoding=encoding",  "", "specify the default external character encoding"),
+	M("--enable=feature[,...]",	   ", --disable=feature[,...]",
+	  "enable or disable features"),
+	M("--internal-encoding=encoding",  ", --external-encoding=encoding",
+	  "specify the default internal and external character encoding"),
 	M("--version",                     "", "print the version"),
 	M("--help",			   "", "show this message, -h for short message"),
     };
@@ -183,10 +183,15 @@
 	M("gems",    "",        "rubygems (default: "DEFAULT_RUBYGEMS_ENABLED")"),
 	M("rubyopt", "",        "RUBYOPT environment variable (default: enabled)"),
     };
-    int i, w = help ? 32 : 16, num = numberof(usage_msg) - (help ? 1 : 0);
-#define SHOW(m) printf("  %.*s%-*.*s%s\n", (m).namelen-1, (m).str, \
-		       w - (m).namelen + 1, (help ? (m).secondlen-1 : 0), (m).str + (m).namelen, \
-		       (m).str + (m).namelen + (m).secondlen)
+    int i, w = 16, num = numberof(usage_msg) - (help ? 1 : 0);
+#define SHOW(m) do { \
+	int wrap = help && (m).namelen + (m).secondlen - 2 > w; \
+	printf("  %.*s%-*.*s%-*s%s\n", (m).namelen-1, (m).str, \
+	       (wrap ? 0 : w - (m).namelen + 1), \
+	       (help ? (m).secondlen-1 : 0), (m).str + (m).namelen, \
+	       (wrap ? w + 3 : 0), (wrap ? "\n" : ""), \
+	       (m).str + (m).namelen + (m).secondlen); \
+    } while (0)
 
     printf("Usage: %s [switches] [--] [programfile] [arguments]\n", name);
     for (i = 0; i < num; ++i)
Index: test/ruby/test_rubyoptions.rb
===================================================================
--- test/ruby/test_rubyoptions.rb	(revision 37817)
+++ test/ruby/test_rubyoptions.rb	(revision 37818)
@@ -40,6 +40,11 @@
       assert_equal([], longer)
       assert_equal([], e)
     end
+    assert_in_out_err(%w(--help)) do |r, e|
+      longer = r[1..-1].select {|x| x.size > 80}
+      assert_equal([], longer)
+      assert_equal([], e)
+    end
   end
 
   def test_option_variables

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

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