Class: Volley::Dsl::Argument

Inherits:
Object
  • Object
show all
Defined in:
lib/volley/dsl/argument.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, options = { }, &block) ⇒ Argument

Returns a new instance of Argument.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/volley/dsl/argument.rb', line 10

def initialize(name, options={ }, &block)
  @name     = name.to_sym
  @block    = block
  @plan     = options.delete(:plan)
  @required = options.delete(:required)
  @default  = options.delete(:default)
  @convert  = options.delete(:convert)
  @convopt  = options.delete(:convert_opts) || {}
  @choices  = options.delete(:choices)

  @value    = @required ? nil : (@default || nil)

  raise "plan instance must be set" unless @plan

  #@plan.action "argument-#{name}", :pre do
  #  arguments[name.to_sym].handler
  #end
end

Instance Attribute Details

#convertObject (readonly)

Returns the value of attribute convert.



7
8
9
# File 'lib/volley/dsl/argument.rb', line 7

def convert
  @convert
end

#defaultObject (readonly)

Returns the value of attribute default.



6
7
8
# File 'lib/volley/dsl/argument.rb', line 6

def default
  @default
end

#nameObject

Returns the value of attribute name.



4
5
6
# File 'lib/volley/dsl/argument.rb', line 4

def name
  @name
end

#requiredObject (readonly)

Returns the value of attribute required.



8
9
10
# File 'lib/volley/dsl/argument.rb', line 8

def required
  @required
end

#valueObject

Returns the value of attribute value.



5
6
7
# File 'lib/volley/dsl/argument.rb', line 5

def value
  @value
end

Instance Method Details

#boolean(value) ⇒ Object



91
92
93
94
95
96
97
98
99
100
# File 'lib/volley/dsl/argument.rb', line 91

def boolean(value)
  case value.class
    when TrueClass, FalseClass
      return value
    else
      return true if value.to_s =~ /^(1|t|true|y|yes)$/
      return false if value.to_s =~ /^(0|f|false|n|no)$/
  end
  nil
end

#checkObject



51
52
53
# File 'lib/volley/dsl/argument.rb', line 51

def check
  raise "arg '#@name' is required, but not set (in check)" if @required && @value.nil?
end

#usageObject

def handler

@value ||= @default unless @default.nil?
raise "arg '#{@name}' is required, but not set" if @required && @value.nil?
if @convert.nil?
  if block_given?
    @value = yield @value
  end
else
  case @convert
    when :boolean
      @value = boolean(@value)
    when :descriptor
      opts = @convopt || {}
      @value = Volley::Descriptor.new(@value, @convopt)
    else
      @value = @value.send(@convert)
  end
end
raise "arg '#{name}' is required, but not set (after convert)" if @required && @value.nil?
raise "arg '#{name}' should be one of #{@choices.inspect}" if @choices && !@choices.include?(@value)

end



77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/volley/dsl/argument.rb', line 77

def usage
  return if (@name == :descriptor && !@required) || @name == :force
  n = @name
  v = @choices || @convert || "string"
  d = @default ? " (#@default)" : ""
  n = "#{n}=#{v}#{d}"
  if required
    n = "<#{n}>"
  else
    n = "[#{n}]"
  end
  n
end