Sha256: 2b1c637574a0bf47b7a12c39331e0f78d97f4c04d81ae8100abc2750cc586fb2
Contents?: true
Size: 1.99 KB
Versions: 1
Compression:
Stored size: 1.99 KB
Contents
# frozen_string_literal: true require 'eac_ruby_utils/core_ext' module EacCli class Definition class HelpFormatter SEP = ' ' IDENT = SEP * 2 OPTION_DESC_SEP = IDENT * 2 class << self def option_long(option) b = option.long b += '=VALUE' if option.argument? b end def option_short(option) b = option.short b += 'VALUE' if option.argument? b end end common_constructor :definition def option_argument(option) b = option.long b += '=VALUE' if option.argument? b end def positional_argument(positional) if positional.subcommand? ::EacRubyUtils::Console::DocoptRunner::SUBCOMMANDS_MACRO else r = "<#{positional.name}>" r += '...' if positional.repeat? r = "[#{r}]" if positional.optional? r end end def section(header, include_header = true) b = include_header ? "#{header.humanize}:\n" : '' b += send("self_#{header}") + "\n" # TO-DO: implement alternatives b end def self_options definition.options.map { |option| IDENT + option_definition(option) }.join("\n") end def self_usage IDENT + self_usage_arguments.join(SEP) end def self_usage_arguments [::EacRubyUtils::Console::DocoptRunner::PROGRAM_MACRO] + definition.options_argument.if_present([]) { |_v| ['[options]'] } + self_usage_arguments_options + self_usage_arguments_positional end def self_usage_arguments_options definition.options.select(&:show_on_usage?).map do |option| self.class.option_argument(option) end end def self_usage_arguments_positional definition.positional.map { |p| positional_argument(p) } end def to_banner "#{definition.description}\n\n#{section('usage')}" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
eac_cli-0.11.0 | lib/eac_cli/definition/help_formatter.rb |