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