Skip to content

Commit 80226e9

Browse files
authored
Merge pull request #8858 from cocker-cc/Make_split_sensitive-aware
(PUP-11429) Make split() sensitive-aware
2 parents 839c29d + 940db71 commit 80226e9

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
@@ -36,6 +36,21 @@
3636
param 'Type[Regexp]', :pattern
3737
end
3838

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