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