Class: IPTables::Interpolation

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

Constant Summary collapse

@@interpolation_regex =
/(.*?)<%\s*(\S+)\s*%>(.*)/

Instance Method Summary collapse

Constructor Details

#initialize(interpolations, initial_string) ⇒ Interpolation

Returns a new instance of Interpolation.



149
150
151
152
153
154
155
156
157
158
# File 'lib/iptables/expansions.rb', line 149

def initialize(interpolations, initial_string)
  @interpolations = interpolations
  @initial_string = initial_string
  @child = nil
  if @initial_string =~ @@interpolation_regex
    self.add_child($1, $2, $3)
  else
    $log.debug("completed substitution: #{@initial_string}")
  end
end

Instance Method Details

#add_child(first, identifier, last) ⇒ Object



160
161
162
163
164
165
166
167
168
169
170
171
# File 'lib/iptables/expansions.rb', line 160

def add_child(first, identifier, last)
  interpolated = @interpolations.primitives.substitute(identifier)
  case interpolated
  when Array
    @child = []
    interpolated.each{ |value|
      @child.push(Interpolation.new(@interpolations, "#{first}#{value}#{last}"))
    }
  else
    @child = Interpolation.new(@interpolations, "#{first}#{interpolated}#{last}")
  end
end

#childrenObject



173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
# File 'lib/iptables/expansions.rb', line 173

def children()
  return_value = nil
  case @child
  when nil
    return_value = @initial_string
  when Array
    return_value = []
    @child.each{ |value|
      return_value.push(value.children())
    }
  else
    return_value = @child.children()
  end
  return return_value
end