Sha256: 8c259751ab37350a62c1fb50a492c674f9809545365af1cd8a597b0ffc59ca84

Contents?: true

Size: 1.42 KB

Versions: 4

Compression:

Stored size: 1.42 KB

Contents

require 'clamp'

module HammerCLI
  module Options

    class OptionDefinition < Clamp::Option::Definition

      attr_accessor :value_formatter

      def help_lhs
        super
      end

      def help_rhs
        lines = [
          description.strip,
          format_description.strip,
          value_description.strip
        ]

        rhs = lines.reject(&:empty?).join("\n")
        rhs.empty? ? " " : rhs
      end

      def format_description
        if value_formatter.nil?
          ""
        else
          value_formatter.description
        end
      end

      def value_description
        default_sources = [
          ("$#{@environment_variable}" if defined?(@environment_variable)),
          (@default_value.inspect if defined?(@default_value))
        ].compact

        str = ""
        str += "Can be specified multiple times. " if multivalued?
        str += "Default: " + default_sources.join(", or ") unless default_sources.empty?
        str
      end

      def default_conversion_block
        if !value_formatter.nil?
          value_formatter.method(:format)
        elsif flag?
          Clamp.method(:truthy?)
        end
      end

      def default_value
        if defined?(@default_value)
          if value_formatter
            value_formatter.format(@default_value)
          else
            @default_value
          end
        elsif multivalued?
          []
        end
      end

    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
hammer_cli-0.0.12 lib/hammer_cli/options/option_definition.rb
hammer_cli-0.0.11 lib/hammer_cli/options/option_definition.rb
hammer_cli-0.0.10 lib/hammer_cli/options/option_definition.rb
hammer_cli-0.0.9 lib/hammer_cli/options/option_definition.rb