Class: Aspera::Cli::ExtendedValue

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/aspera/cli/extended_value.rb

Overview

command line extended values

Instance Method Summary collapse

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

#modifiersObject



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