Class: OptionListMapper

Inherits:
Object
  • Object
show all
Defined in:
lib/option_list_mapper.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options_list, kvs, singles, opts) ⇒ OptionListMapper

Returns a new instance of OptionListMapper.



6
7
8
9
10
11
12
13
14
15
# File 'lib/option_list_mapper.rb', line 6

def initialize(options_list,kvs,singles,opts)
  options = opts.dup
  @modified_options = options_list
  kvs.each do |key| 
    next if options[key].nil?
    OptionListMapper.map_to_string(@modified_options, key, options[key])
    @modified_options << ' '
  end
  @modified_options << singles.map{|key| OptionListMapper.map_single(key, options[key])}.join(' ')
end

Instance Attribute Details

#modified_optionsObject

simple should return array of hashes => value list should return array of one dimensional hashes that the value is an array => [value, value] optionally list may return a value that is a hash that will be converted to simple or list



5
6
7
# File 'lib/option_list_mapper.rb', line 5

def modified_options
  @modified_options
end

Class Method Details

.create_options(options_list = "", kvs = [], singles = [], opts = {}) ⇒ Object



19
20
21
# File 'lib/option_list_mapper.rb', line 19

def create_options(options_list="",kvs=[],singles=[],opts={})
  new(options_list,kvs,singles,opts).modified_options.strip
end

.map_single(key, value) ⇒ Object



48
49
50
51
# File 'lib/option_list_mapper.rb', line 48

def map_single(key, value)
  return '' if value.nil?
  "#{key} #{value}"
end

.map_to_string(string, key, value, display_brackets = true, display_key = true) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/option_list_mapper.rb', line 23

def map_to_string(string, key, value, display_brackets=true, display_key=true)
  string << "#{key}=" if display_key
  if not value.is_a?(Array) and not value.is_a?(Hash)
    string << value.to_s
  elsif value.is_a?(Array)
    string << '{' if display_brackets
    value.each_with_index{|v, index|
      if v.is_a?(Array)
        map_to_string(string, key, v, true, false)
      elsif v.is_a?(Hash)
        map_to_string(string, key, v, false, false)
      else
        string << v.to_s
      end
      string << ' ' unless index == value.size - 1
    }
    string << '}' if display_brackets
  elsif value.is_a?(Hash)
    string << '{' if display_brackets
    map_to_string(string, value.keys.first, value.values.first)
    string << '}' if display_brackets
  end
  string
end