Class: Aspera::Cli::ExtendedValue
- Inherits:
-
Object
- Object
- Aspera::Cli::ExtendedValue
- Includes:
- Singleton
- Defined in:
- lib/aspera/cli/extended_value.rb
Overview
command line extended values
Instance Method Summary collapse
-
#evaluate(value) ⇒ Object
parse an option value if it is a String using supported extended value modifiers other value types are returned as is.
- #modifiers ⇒ Object
-
#set_handler(name, type, method) ⇒ Object
add a new :reader or :decoder decoder can be chained, reader is last one on right.
Instance Method Details
#evaluate(value) ⇒ Object
parse an option value if it is a String using supported extended value modifiers other value types are returned as is
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/aspera/cli/extended_value.rb', line 66 def evaluate(value) return value if !value.is_a?(String) # first determine decoders, in reversed order decoders_reversed=[] while (m=value.match(/^@([^:]+):(.*)/)) and @handlers[:decoder].include?(m[1]) decoders_reversed.unshift(m[1]) value=m[2] end # then read value @handlers[:reader].each do |reader,method| if m=value.match(/^@#{reader}:(.*)/) then value=method.call(m[1]) break end end decoders_reversed.each do |decoder| value=@handlers[:decoder][decoder].call(value) end return value end |
#modifiers ⇒ Object
54 |
# File 'lib/aspera/cli/extended_value.rb', line 54 def modifiers;@handlers.keys.map{|i|@handlers[i].keys}.flatten;end |
#set_handler(name, type, method) ⇒ Object
add a new :reader or :decoder decoder can be chained, reader is last one on right
58 59 60 61 62 |
# File 'lib/aspera/cli/extended_value.rb', line 58 def set_handler(name,type,method) raise "type must be one of #{@handlers.keys}" unless @handlers.keys.include?(type) Log.log.debug("setting #{type} handler for #{name}") @handlers[type][name]=method end |