From eb06e8d3ad21f60e9e0c499f9d70050f79ff5de0 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 5 Jul 2013 13:43:25 +0000 Subject: [PATCH] un.rb: help order * lib/un.rb (UN#help): show help messages in the given order. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41801 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/un.rb | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/un.rb b/lib/un.rb index 2abdc7608f..487ba9eb75 100644 --- a/lib/un.rb +++ b/lib/un.rb @@ -351,15 +351,25 @@ module UN # :nodoc: module_function def help(argv, output: $stdout) all = argv.empty? + cmd = nil + if all + store = proc {|msg| output << msg} + else + messages = {} + store = proc {|msg| messages[cmd] = msg} + end open(__FILE__) do |me| while me.gets("##\n") if help = me.gets("\n\n") - if all or argv.delete help[/^#\s*ruby\s.*-e\s+(\w+)/, 1] - output << help.gsub(/^# ?/, "") - break if !all and argv.empty? + if all or argv.include?(cmd = help[/^#\s*ruby\s.*-e\s+(\w+)/, 1]) + store[help.gsub(/^# ?/, "")] + break unless all or argv.size > messages.size end end end end + if messages + argv.each {|cmd| output << messages[cmd]} + end end end