class CFA::AugeasReader
A class responsible for reading {AugeasTree} from Augeas
Public Class Methods
read(aug, prefix)
click to toggle source
Creates tree from prefix in aug. @param aug [::Augeas] @param prefix [String] Augeas path prefix @return [AugeasTree]
# File lib/cfa/augeas_parser/reader.rb, line 14 def read(aug, prefix) keys_cache = AugeasKeysCache.new(aug, prefix) tree = AugeasTree.new load_tree(aug, prefix, tree, keys_cache) tree end
Private Class Methods
load_key(prefix, aug_key)
click to toggle source
loads a key in a format that AugeasTree
expects
# File lib/cfa/augeas_parser/reader.rb, line 41 def load_key(prefix, aug_key) # clean from key prefix and for collection remove number inside [] key = stripped_path(prefix, aug_key) key.end_with?("]") ? key.sub(/\[\d+\]$/, "[]") : key end
load_tree(aug, prefix, tree, keys_cache)
click to toggle source
fills tree with data
# File lib/cfa/augeas_parser/reader.rb, line 26 def load_tree(aug, prefix, tree, keys_cache) data = keys_cache.keys_for_prefix(prefix).map do |key| aug_key = prefix + "/" + key { key: load_key(prefix, aug_key), value: load_value(aug, aug_key, keys_cache), orig_key: stripped_path(prefix, aug_key), operation: :keep } end tree.all_data.concat(data) end
load_value(aug, aug_key, keys_cache)
click to toggle source
loads value from auges. If value have tree under, it will also read it
# File lib/cfa/augeas_parser/reader.rb, line 54 def load_value(aug, aug_key, keys_cache) subkeys = keys_cache.keys_for_prefix(aug_key) nested = !subkeys.empty? value = aug.get(aug_key) if nested subtree = AugeasTree.new load_tree(aug, aug_key, subtree, keys_cache) value ? AugeasTreeValue.new(subtree, value) : subtree else value end end
stripped_path(prefix, aug_key)
click to toggle source
path without prefix we are not interested in
# File lib/cfa/augeas_parser/reader.rb, line 48 def stripped_path(prefix, aug_key) # +1 for size due to ending '/' not part of prefix aug_key[(prefix.size + 1)..-1] end