Class: PicsolveDockerBuilder::Helpers::Config::VariableObject

Inherits:
Object
  • Object
show all
Defined in:
lib/picsolve_docker_builder/helpers/config/variable_object.rb

Overview

represents a config string that contains variables

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(str) ⇒ VariableObject

Returns a new instance of VariableObject.



64
65
66
# File 'lib/picsolve_docker_builder/helpers/config/variable_object.rb', line 64

def initialize(str)
  @str = str
end

Class Method Details

.regexObject



11
12
13
# File 'lib/picsolve_docker_builder/helpers/config/variable_object.rb', line 11

def self.regex
  /\$\{[^\}]*\}/
end

.regex_fullObject

Regex that finds variabales



7
8
9
# File 'lib/picsolve_docker_builder/helpers/config/variable_object.rb', line 7

def self.regex_full
  /^\$\{([^\}]*)\}$/
end

.replace_string(obj) ⇒ Object

Checks if a string needs to be replaced by an VariableObject



16
17
18
19
# File 'lib/picsolve_docker_builder/helpers/config/variable_object.rb', line 16

def self.replace_string(obj)
  return obj unless VariableObject.regex.match(obj)
  VariableObject.new(obj)
end

Instance Method Details

#create_listObject

Split the strings accordingly



26
27
28
29
# File 'lib/picsolve_docker_builder/helpers/config/variable_object.rb', line 26

def create_list
  lst = split_list
  replace_variables(lst)
end

#inspectObject



48
49
50
# File 'lib/picsolve_docker_builder/helpers/config/variable_object.rb', line 48

def inspect
  "<#VariableObject#{list}>"
end

#listObject



21
22
23
# File 'lib/picsolve_docker_builder/helpers/config/variable_object.rb', line 21

def list
  @list ||= create_list
end

#replace_variables(list) ⇒ Object

Replace variables



32
33
34
35
36
37
38
39
40
41
# File 'lib/picsolve_docker_builder/helpers/config/variable_object.rb', line 32

def replace_variables(list)
  list.map! do |elem|
    m = elem.match(VariableObject.regex_full)
    if m
      "var=#{m[1]}"
    else
      elem
    end
  end
end

#split_list(existing_list = []) ⇒ Object

Split the strings accordingly



53
54
55
56
57
58
59
60
61
62
# File 'lib/picsolve_docker_builder/helpers/config/variable_object.rb', line 53

def split_list(existing_list = [])
  if existing_list.length == 0
    str = @str
  else
    str = existing_list.pop
    return existing_list if str.length == 0
  end
  list = existing_list + str.partition(VariableObject.regex)
  split_list(list)
end

#to_sObject



43
44
45
46
# File 'lib/picsolve_docker_builder/helpers/config/variable_object.rb', line 43

def to_s
  # TODO: implement var evaluation here
  "<#VariableObject#{list}>"
end