lib/main/usage.rb in ThiagoLelis-backgroundjob-1.0.4 vs lib/main/usage.rb in ThiagoLelis-backgroundjob-1.0.5
- old
+ new
@@ -1,211 +1,211 @@
-module Main
- class Usage < ::Array
- fattr 'chunkname'
- fattr 'upcase'
- fattr 'eos'
-
- def initialize opts={}
- self.fields=[]
- self.chunkname = lambda{|chunkname| chunkname.to_s.strip.upcase}
- self.upcase = true
- self.eos = "\n\n"
- if opts.has_key?(:upcase) or opts.has_key?('upcase')
- self.upcase = opts[:upcase] || opts['optcase']
- end
- end
-
- def clear
- super
- ensure
- fields.clear
- end
-
- def delete_at key
- self[key] = nil
- end
- alias_method 'delete', 'delete_at'
-
- def self.default_synopsis main
- # build up synopsis
- s = "#{ main.name }"
-
- # mode info
- if main.mode_name != 'main'
- s << " #{ main.fully_qualified_mode.join ' ' }"
- end
-
- unless main.modes.empty?
- modes = main.modes.keys.join('|')
- s << " (#{ modes })"
- end
-
- # argument info
- main.parameters.each do |p|
- if p.type == :argument
- if(p.required? and p.arity != -1)
- if p.arity > 0
- p.arity.times{ s << " #{ p.name }" }
- else
- (p.arity.abs - 1).times{ s << " #{ p.name }" }
- s << " #{ p.name }*"
- end
- else
- #s << " [#{ p.name }]"
- if p.arity > 0
- a = []
- p.arity.times{ a << "#{ p.name }" }
- s << " [#{ a.join ' ' }]"
- else
- a = []
- (p.arity.abs - 1).times{ a << "#{ p.name }" }
- a << "#{ p.name }*"
- s << " [#{ a.join ' ' }]"
- end
- end
- end
- end
-
- # keyword info
- main.parameters.each do |p|
- if p.type == :keyword
- if p.required?
- s << " #{ p.name }=#{ p.name }"
- else
- s << " [#{ p.name }=#{ p.name }]"
- end
- end
- end
-
- # option info
- n = 0
- main.parameters.each do |p|
- if p.type == :option
- if p.required?
- case p.argument
- when :required
- s << " --#{ p.name }=#{ p.name }"
- when :optional
- s << " --#{ p.name }=[#{ p.name }]"
- else
- s << " --#{ p.name }"
- end
- else
- n += 1
- end
- end
- end
- if n > 0
- s << " [options]+"
- end
-
- # help info
-=begin
- if main.modes.size > 0
- modes = main.modes.keys.join('|')
- s << "\n#{ main.name } (#{ modes }) help"
- end
- if main.mode_name != 'main'
- s << "\n#{ main.name } #{ main.fully_qualified_mode.join ' ' } help"
- else
- s << "\n#{ main.name } help"
- end
-=end
-
- s
- end
-
- def name_section
- if main.version?
- "#{ main.name } v#{ main.version }"
- else
- "#{ main.name }"
- end
- end
-
- def synopsis_section
- main.synopsis
- end
-
- def description_section
- main.description if main.description?
- end
-
- def parameters_section
- arguments = main.parameters.select{|p| p.type == :argument}
- keywords = main.parameters.select{|p| p.type == :keyword}
- options = main.parameters.select{|p| p.type == :option}
- environment = main.parameters.select{|p| p.type == :environment}
-
- help, nothelp = options.partition{|p| p.name == 'help'}
- options = nothelp + help
-
- parameters = arguments + keywords + options + environment
-
- s =
- parameters.map do |p|
- ps = ''
- ps << Util.columnize("#{ p.synopsis }", :indent => 2, :width => 78)
- #ps << Util.columnize("* #{ p.synopsis }", :indent => 2, :width => 78)
- #ps << "\n"
- if p.description?
- ps << "\n"
- ps << Util.columnize("#{ p.description }", :indent => 6, :width => 78)
- #ps << Util.columnize(p.description, :indent => 6, :width => 78)
- #ps << "\n"
- end
- #ps << "\n"
- unless(p.examples.nil? or p.examples.empty?)
- p.examples.each do |example|
- ps << "\n"
- ps << Util.columnize("#{ example }", :indent => 8, :width => 78)
- end
- end
- ps
- end.join("\n")
- end
-
- def author_section
- main.author
- end
-
- class << self
- def default_usage main
- usage = new
- usage.main = main
-# HACK
- %w( name synopsis description parameters author ).each do |key|
- usage[key] = nil
- end
- usage
- end
-
- alias_method "default", "default_usage"
- end
-
- fattr "main"
-
- def set_defaults!
- usage = self
- usage['name'] ||= name_section
- usage['synopsis'] ||= synopsis_section
- usage['description'] ||= description_section
- usage['parameters'] ||= parameters_section unless main.parameters.empty?
- usage['author'] ||= author_section if main.author?
- end
-
- def to_s
- set_defaults!
- s = ''
- each_pair do |key, value|
- next unless(key and value)
- up, down = key.to_s.upcase, key.to_s.downcase
- if value
- s << (upcase ? up : down) << "\n"
- s << Util.indent(Util.unindent(value.to_s), 2)
- s << eos
- end
- end
- s
- end
- end
-end
+module Main
+ class Usage < ::Array
+ fattr 'chunkname'
+ fattr 'upcase'
+ fattr 'eos'
+
+ def initialize opts={}
+ self.fields=[]
+ self.chunkname = lambda{|chunkname| chunkname.to_s.strip.upcase}
+ self.upcase = true
+ self.eos = "\n\n"
+ if opts.has_key?(:upcase) or opts.has_key?('upcase')
+ self.upcase = opts[:upcase] || opts['optcase']
+ end
+ end
+
+ def clear
+ super
+ ensure
+ fields.clear
+ end
+
+ def delete_at key
+ self[key] = nil
+ end
+ alias_method 'delete', 'delete_at'
+
+ def self.default_synopsis main
+ # build up synopsis
+ s = "#{ main.name }"
+
+ # mode info
+ if main.mode_name != 'main'
+ s << " #{ main.fully_qualified_mode.join ' ' }"
+ end
+
+ unless main.modes.empty?
+ modes = main.modes.keys.join('|')
+ s << " (#{ modes })"
+ end
+
+ # argument info
+ main.parameters.each do |p|
+ if p.type == :argument
+ if(p.required? and p.arity != -1)
+ if p.arity > 0
+ p.arity.times{ s << " #{ p.name }" }
+ else
+ (p.arity.abs - 1).times{ s << " #{ p.name }" }
+ s << " #{ p.name }*"
+ end
+ else
+ #s << " [#{ p.name }]"
+ if p.arity > 0
+ a = []
+ p.arity.times{ a << "#{ p.name }" }
+ s << " [#{ a.join ' ' }]"
+ else
+ a = []
+ (p.arity.abs - 1).times{ a << "#{ p.name }" }
+ a << "#{ p.name }*"
+ s << " [#{ a.join ' ' }]"
+ end
+ end
+ end
+ end
+
+ # keyword info
+ main.parameters.each do |p|
+ if p.type == :keyword
+ if p.required?
+ s << " #{ p.name }=#{ p.name }"
+ else
+ s << " [#{ p.name }=#{ p.name }]"
+ end
+ end
+ end
+
+ # option info
+ n = 0
+ main.parameters.each do |p|
+ if p.type == :option
+ if p.required?
+ case p.argument
+ when :required
+ s << " --#{ p.name }=#{ p.name }"
+ when :optional
+ s << " --#{ p.name }=[#{ p.name }]"
+ else
+ s << " --#{ p.name }"
+ end
+ else
+ n += 1
+ end
+ end
+ end
+ if n > 0
+ s << " [options]+"
+ end
+
+ # help info
+=begin
+ if main.modes.size > 0
+ modes = main.modes.keys.join('|')
+ s << "\n#{ main.name } (#{ modes }) help"
+ end
+ if main.mode_name != 'main'
+ s << "\n#{ main.name } #{ main.fully_qualified_mode.join ' ' } help"
+ else
+ s << "\n#{ main.name } help"
+ end
+=end
+
+ s
+ end
+
+ def name_section
+ if main.version?
+ "#{ main.name } v#{ main.version }"
+ else
+ "#{ main.name }"
+ end
+ end
+
+ def synopsis_section
+ main.synopsis
+ end
+
+ def description_section
+ main.description if main.description?
+ end
+
+ def parameters_section
+ arguments = main.parameters.select{|p| p.type == :argument}
+ keywords = main.parameters.select{|p| p.type == :keyword}
+ options = main.parameters.select{|p| p.type == :option}
+ environment = main.parameters.select{|p| p.type == :environment}
+
+ help, nothelp = options.partition{|p| p.name == 'help'}
+ options = nothelp + help
+
+ parameters = arguments + keywords + options + environment
+
+ s =
+ parameters.map do |p|
+ ps = ''
+ ps << Util.columnize("#{ p.synopsis }", :indent => 2, :width => 78)
+ #ps << Util.columnize("* #{ p.synopsis }", :indent => 2, :width => 78)
+ #ps << "\n"
+ if p.description?
+ ps << "\n"
+ ps << Util.columnize("#{ p.description }", :indent => 6, :width => 78)
+ #ps << Util.columnize(p.description, :indent => 6, :width => 78)
+ #ps << "\n"
+ end
+ #ps << "\n"
+ unless(p.examples.nil? or p.examples.empty?)
+ p.examples.each do |example|
+ ps << "\n"
+ ps << Util.columnize("#{ example }", :indent => 8, :width => 78)
+ end
+ end
+ ps
+ end.join("\n")
+ end
+
+ def author_section
+ main.author
+ end
+
+ class << self
+ def default_usage main
+ usage = new
+ usage.main = main
+# HACK
+ %w( name synopsis description parameters author ).each do |key|
+ usage[key] = nil
+ end
+ usage
+ end
+
+ alias_method "default", "default_usage"
+ end
+
+ fattr "main"
+
+ def set_defaults!
+ usage = self
+ usage['name'] ||= name_section
+ usage['synopsis'] ||= synopsis_section
+ usage['description'] ||= description_section
+ usage['parameters'] ||= parameters_section unless main.parameters.empty?
+ usage['author'] ||= author_section if main.author?
+ end
+
+ def to_s
+ set_defaults!
+ s = ''
+ each_pair do |key, value|
+ next unless(key and value)
+ up, down = key.to_s.upcase, key.to_s.downcase
+ if value
+ s << (upcase ? up : down) << "\n"
+ s << Util.indent(Util.unindent(value.to_s), 2)
+ s << eos
+ end
+ end
+ s
+ end
+ end
+end