blob: 2112e565fbab3e7ad77a3ae307b016574d7dbb34 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
module Puppet
module Util
class SettingValue
def initialize(setting_value, subsetting_separator = ' ')
@setting_value = setting_value
@subsetting_separator = subsetting_separator
if @setting_value
unquoted = setting_value[1, setting_value.length - 2]
@subsetting_items = unquoted.scan(Regexp.new("(?:(?:[^\\#{@subsetting_separator}]|\\.)+)")) # an item can contain escaped separator
@subsetting_items.map! { |item| item.strip }
else
@subsetting_items = []
end
end
def get_value
result = ""
first = true
@subsetting_items.each { |item|
result << @subsetting_separator unless first
result << item
first = false
}
"\"" + result + "\""
end
def get_subsetting_value(subsetting)
value = nil
@subsetting_items.each { |item|
if(item.start_with?(subsetting))
value = item[subsetting.length, item.length - subsetting.length]
break
end
}
value
end
def add_subsetting(subsetting, subsetting_value)
new_item = subsetting + (subsetting_value || '')
found = false
@subsetting_items.map! { |item|
if item.start_with?(subsetting)
value = new_item
found = true
else
value = item
end
value
}
unless found
@subsetting_items.push(new_item)
end
end
def remove_subsetting(subsetting)
@subsetting_items = @subsetting_items.map { |item| item.start_with?(subsetting) ? nil : item }.compact
end
end
end
end
|