class CFA::AugeasCollection
Represents list of same config options in augeas. For example comments are often stored in collections.
Public Class Methods
new(tree, name)
click to toggle source
# File lib/cfa/augeas_parser.rb, line 104 def initialize(tree, name) @tree = tree @name = name load_collection end
Public Instance Methods
add(value, placer = AppendPlacer.new)
click to toggle source
# File lib/cfa/augeas_parser.rb, line 112 def add(value, placer = AppendPlacer.new) element = placer.new_element(@tree) element[:key] = augeas_name element[:value] = value element[:operation] = :add # FIXME: load_collection missing here end
delete(value)
click to toggle source
# File lib/cfa/augeas_parser.rb, line 120 def delete(value) to_delete, to_mark = to_remove(value) .partition { |e| e[:operation] == :add } @tree.all_data.delete_if { |e| to_delete.include?(e) } to_mark.each { |e| e[:operation] = :remove } load_collection end
Private Instance Methods
augeas_name()
click to toggle source
# File lib/cfa/augeas_parser.rb, line 139 def augeas_name @name + "[]" end
load_collection()
click to toggle source
# File lib/cfa/augeas_parser.rb, line 132 def load_collection entries = @tree.data.select do |entry| entry[:key] == augeas_name && entry[:operation] != :remove end @collection = entries.map { |e| e[:value] }.freeze end
to_remove(value)
click to toggle source
# File lib/cfa/augeas_parser.rb, line 143 def to_remove(value) key = augeas_name @tree.data.select do |entry| entry[:key] == key && value_match?(entry[:value], value) end end
value_match?(value, match)
click to toggle source
# File lib/cfa/augeas_parser.rb, line 151 def value_match?(value, match) if match.is_a?(Regexp) value =~ match else value == match end end