Sha256: 3a488de665701d9f530f52205060fbc7714ca5df01d00a72b772736932b85177

Contents?: true

Size: 1.8 KB

Versions: 3

Compression:

Stored size: 1.8 KB

Contents

module Sprout

  module Executable

    ##
    # Concrete Sprout::Executable::Param object for Boolean values.
    #
    # By default Boolean parameters have their value set to false and
    # :hidden_value set to true. This means that when they are serialized
    # to the shell, they will usually be represented like:
    #
    #   --name
    #
    # Rather than:
    #
    #   --name=true
    #
    # The following example demonstrates a simple use of the Boolean
    # parameter:
    #
    #   class Foo
    #     include Sprout::Executable
    #
    #     add_param :visible, Boolean
    #   end
    #
    # @see Sprout::Executable::Param
    #
    class Boolean < Param

      ##
      # By default, the Boolean parameter will only
      # be displayed when it's value is +true+.
      #
      # Set :show_on_false to true in order to reverse
      # this rule.
      #
      #   add_param :visible, Boolean, :show_on_false => true
      #
      # Will make the following:
      #
      #   foo :name do |t|
      #     t.visible = false
      #   end
      #
      # Serialize to the shell with:
      #
      #   foo -visible=false
      # 
      attr_accessor :show_on_false

      def initialize
        super
        @delimiter               = ' '
        @option_parser_type_name = 'BOOL'
        @show_on_false           = false
        @value                   = false
        @hidden_value            = true
      end

      ##
      # Convert string representations of truthiness
      # to something more Booley.
      def value=(value)
        value = (value == "true" || value === true) ? true : false 
        super value
      end
      
      def visible?
        @visible ||= value
        if(show_on_false)
          return true unless value
        else
          return @visible
        end
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sprout-1.1.3.pre lib/sprout/executable/boolean.rb
sprout-1.1.2.pre lib/sprout/executable/boolean.rb
sprout-1.0.35.pre lib/sprout/executable/boolean.rb