Sha256: d6ea5fc64475bf872bb588126cc8add7b7c79b7d2437142668c5ae5cba20a99b
Contents?: true
Size: 1.27 KB
Versions: 2
Compression:
Stored size: 1.27 KB
Contents
module RTFM class SynopsisSection def initialize @options = [] @arguments = [] yield self if block_given? end def add_argument(*args) @arguments.concat args end alias_method :add_arguments, :add_argument alias_method :argument, :add_argument alias_method :arguments, :add_argument def add_option(*args) if args.size == 1 && args.first.is_a?(Option) then @options << args.first else @options << Option.new(*args) end end alias_method :option, :add_option def compare_flags(a, b) a_ord, b_ord = a.ord, b.ord if ('0'.ord .. '9'.ord).include?(a_ord) a_ord += 'z'.ord end if ('0'.ord .. '9'.ord).include?(b_ord) b_ord += 'z'.ord end a_ord <=> b_ord end def to_groff flags = @options.select {|opt| opt.title.size == 1 && !opt.argument} long_args = @options - flags GroffString.groffify do |out| out.section "synopsis" out.put_name out.Op "Fl", flags.map {|flag| flag.title}.sort {|a, b| compare_flags(a,b)}.join long_args.each do |opt| out << opt.to_groff(:option) end @arguments.each do |arg| out.Ar arg end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rtfm-0.5.2 | lib/rtfm/sections/synopsis.rb |
rtfm-0.5.1 | lib/rtfm/sections/synopsis.rb |