Skip to content

Commit 64d0f8d

Browse files
authored
Merge pull request #9118 from joshcooper/backport_11429
(PUP-11429) Make split() sensitive-aware
2 parents 65f30af + 89a0eb9 commit 64d0f8d

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

lib/puppet/functions/split.rb

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,21 @@
3535
param 'Type[Regexp]', :pattern
3636
end
3737

38+
dispatch :split_String_sensitive do
39+
param 'Sensitive[String]', :sensitive
40+
param 'String', :pattern
41+
end
42+
43+
dispatch :split_Regexp_sensitive do
44+
param 'Sensitive[String]', :sensitive
45+
param 'Regexp', :pattern
46+
end
47+
48+
dispatch :split_RegexpType_sensitive do
49+
param 'Sensitive[String]', :sensitive
50+
param 'Type[Regexp]', :pattern
51+
end
52+
3853
def split_String(str, pattern)
3954
str.split(Regexp.compile(pattern))
4055
end
@@ -46,4 +61,16 @@ def split_Regexp(str, pattern)
4661
def split_RegexpType(str, pattern)
4762
str.split(pattern.regexp)
4863
end
49-
end
64+
65+
def split_String_sensitive(sensitive, pattern)
66+
Puppet::Pops::Types::PSensitiveType::Sensitive.new(split_String(sensitive.unwrap, pattern))
67+
end
68+
69+
def split_Regexp_sensitive(sensitive, pattern)
70+
Puppet::Pops::Types::PSensitiveType::Sensitive.new(split_Regexp(sensitive.unwrap, pattern))
71+
end
72+
73+
def split_RegexpType_sensitive(sensitive, pattern)
74+
Puppet::Pops::Types::PSensitiveType::Sensitive.new(split_RegexpType(sensitive.unwrap, pattern))
75+
end
76+
end

spec/unit/functions/split_spec.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,10 @@ def split(*args)
5050
it 'should handle pattern in Regexp Type form with missing regular expression' do
5151
expect(split('ab',type_parser.parse('Regexp'))).to eql(['a', 'b'])
5252
end
53+
54+
it 'should handle sensitive String' do
55+
expect(split(Puppet::Pops::Types::PSensitiveType::Sensitive.new('a,b'), ',')).to be_a(Puppet::Pops::Types::PSensitiveType::Sensitive)
56+
expect(split(Puppet::Pops::Types::PSensitiveType::Sensitive.new('a,b'), /,/)).to be_a(Puppet::Pops::Types::PSensitiveType::Sensitive)
57+
expect(split(Puppet::Pops::Types::PSensitiveType::Sensitive.new('a,b'), type_parser.parse('Regexp[/,/]'))).to be_a(Puppet::Pops::Types::PSensitiveType::Sensitive)
58+
end
5359
end

0 commit comments

Comments
 (0)