Class: Aspera::Cli::ExtendedValue

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

Overview

command line extended values

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.decode_csvt(value) ⇒ Object

decode comma separated table text



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/aspera/cli/extended_value.rb', line 19

def decode_csvt(value)
  col_titles = nil
  hash_array = []
  CSV.parse(value).each do |values|
    next if values.empty?
    if col_titles.nil?
      col_titles = values
    else
      entry = {}
      col_titles.each{|title|entry[title] = values.shift}
      hash_array.push(entry)
    end
  end
  Log.log.warn('Titled CSV file without any line') if hash_array.empty?
  return hash_array
end

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



72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/aspera/cli/extended_value.rb', line 72

def evaluate(value)
  return value if !value.is_a?(String)
  # first determine decoders, in reversed order
  handlers_reversed = []
  while (m = value.match(/^@([^:]+):(.*)/)) && @handlers.include?(m[1].to_sym)
    handlers_reversed.unshift(m[1].to_sym)
    value = m[2]
  end
  handlers_reversed.each do |handler|
    value = @handlers[handler].call(value)
  end
  return value
end

#modifiersObject



61
# File 'lib/aspera/cli/extended_value.rb', line 61

def modifiers; @handlers.keys; end

#set_handler(name, method) ⇒ Object

add a new handler



64
65
66
67
68
# File 'lib/aspera/cli/extended_value.rb', line 64

def set_handler(name, method)
  Log.log.debug{"setting handler for #{name}"}
  raise 'name must be Symbol' unless name.is_a?(Symbol)
  @handlers[name] = method
end