|
32 | 32 | # $i3 = regsubst($ipaddress,'^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$','\\3')
|
33 | 33 | # ```
|
34 | 34 | dispatch :regsubst_string do
|
35 |
| - param 'Variant[Array[String],String]', :target |
| 35 | + param 'Variant[Array[Variant[String,Sensitive[String]]],Sensitive[Array[Variant[String,Sensitive[String]]]],Variant[String,Sensitive[String]]]', :target |
36 | 36 | param 'String', :pattern
|
37 | 37 | param 'Variant[String,Hash[String,String]]', :replacement
|
38 | 38 | optional_param 'Optional[Pattern[/^[GEIM]*$/]]', :flags
|
|
69 | 69 | # $x = regsubst($ipaddress, /([0-9]+)/, '<\\1>', 'G')
|
70 | 70 | # ```
|
71 | 71 | dispatch :regsubst_regexp do
|
72 |
| - param 'Variant[Array[String],String]', :target |
| 72 | + param 'Variant[Array[Variant[String,Sensitive[String]]],Sensitive[Array[Variant[String,Sensitive[String]]]],Variant[String,Sensitive[String]]]', :target |
73 | 73 | param 'Variant[Regexp,Type[Regexp]]', :pattern
|
74 | 74 | param 'Variant[String,Hash[String,String]]', :replacement
|
75 | 75 | optional_param 'Pattern[/^G?$/]', :flags
|
@@ -97,7 +97,26 @@ def regsubst_regexp(target, pattern, replacement, flags = nil)
|
97 | 97 | end
|
98 | 98 |
|
99 | 99 | def inner_regsubst(target, re, replacement, op)
|
100 |
| - target.respond_to?(op) ? target.send(op, re, replacement) : target.collect { |e| e.send(op, re, replacement) } |
| 100 | + if target.is_a?(Puppet::Pops::Types::PSensitiveType::Sensitive) && target.unwrap.is_a?(Array) |
| 101 | + # this is a Sensitive Array |
| 102 | + target = target.unwrap |
| 103 | + target.map do |item| |
| 104 | + inner_regsubst(item, re, replacement, op) |
| 105 | + end |
| 106 | + elsif target.is_a?(Array) |
| 107 | + # this is an Array |
| 108 | + target.map do |item| |
| 109 | + inner_regsubst(item, re, replacement, op) |
| 110 | + end |
| 111 | + elsif target.is_a?(Puppet::Pops::Types::PSensitiveType::Sensitive) |
| 112 | + # this is a Sensitive |
| 113 | + target = target.unwrap |
| 114 | + target = target.respond_to?(op) ? target.send(op, re, replacement) : target.map { |e| e.send(op, re, replacement) } |
| 115 | + Puppet::Pops::Types::PSensitiveType::Sensitive.new(target) |
| 116 | + else |
| 117 | + # this should be a String |
| 118 | + target.respond_to?(op) ? target.send(op, re, replacement) : target.map { |e| e.send(op, re, replacement) } |
| 119 | + end |
101 | 120 | end
|
102 | 121 | private :inner_regsubst
|
103 | 122 | end
|
0 commit comments