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/