Class: Volley::Dsl::Argument
- Inherits:
-
Object
- Object
- Volley::Dsl::Argument
- Defined in:
- lib/volley/dsl/argument.rb
Instance Attribute Summary collapse
-
#convert ⇒ Object
readonly
Returns the value of attribute convert.
-
#default ⇒ Object
readonly
Returns the value of attribute default.
-
#name ⇒ Object
Returns the value of attribute name.
-
#required ⇒ Object
readonly
Returns the value of attribute required.
-
#value ⇒ Object
Returns the value of attribute value.
Instance Method Summary collapse
- #boolean(value) ⇒ Object
- #check ⇒ Object
-
#initialize(name, options = { }, &block) ⇒ Argument
constructor
A new instance of Argument.
-
#usage ⇒ Object
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 #@[email protected]” if @choices && [email protected]?(@value) end.
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, ={ }, &block) @name = name.to_sym @block = block @plan = .delete(:plan) @required = .delete(:required) @default = .delete(:default) @convert = .delete(:convert) @convopt = .delete(:convert_opts) || {} @choices = .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
#convert ⇒ Object (readonly)
Returns the value of attribute convert.
7 8 9 |
# File 'lib/volley/dsl/argument.rb', line 7 def convert @convert end |
#default ⇒ Object (readonly)
Returns the value of attribute default.
6 7 8 |
# File 'lib/volley/dsl/argument.rb', line 6 def default @default end |
#name ⇒ Object
Returns the value of attribute name.
4 5 6 |
# File 'lib/volley/dsl/argument.rb', line 4 def name @name end |
#required ⇒ Object (readonly)
Returns the value of attribute required.
8 9 10 |
# File 'lib/volley/dsl/argument.rb', line 8 def required @required end |
#value ⇒ Object
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 |
#check ⇒ Object
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 |
#usage ⇒ Object
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 |