diff --git a/lib/puppet/functions/split.rb b/lib/puppet/functions/split.rb index e6e832184b7..943c3c53683 100644 --- a/lib/puppet/functions/split.rb +++ b/lib/puppet/functions/split.rb @@ -35,6 +35,21 @@ param 'Type[Regexp]', :pattern end + dispatch :split_String_sensitive do + param 'Sensitive[String]', :sensitive + param 'String', :pattern + end + + dispatch :split_Regexp_sensitive do + param 'Sensitive[String]', :sensitive + param 'Regexp', :pattern + end + + dispatch :split_RegexpType_sensitive do + param 'Sensitive[String]', :sensitive + param 'Type[Regexp]', :pattern + end + def split_String(str, pattern) str.split(Regexp.compile(pattern)) end @@ -46,4 +61,16 @@ def split_Regexp(str, pattern) def split_RegexpType(str, pattern) str.split(pattern.regexp) end -end \ No newline at end of file + + def split_String_sensitive(sensitive, pattern) + Puppet::Pops::Types::PSensitiveType::Sensitive.new(split_String(sensitive.unwrap, pattern)) + end + + def split_Regexp_sensitive(sensitive, pattern) + Puppet::Pops::Types::PSensitiveType::Sensitive.new(split_Regexp(sensitive.unwrap, pattern)) + end + + def split_RegexpType_sensitive(sensitive, pattern) + Puppet::Pops::Types::PSensitiveType::Sensitive.new(split_RegexpType(sensitive.unwrap, pattern)) + end +end diff --git a/spec/unit/functions/split_spec.rb b/spec/unit/functions/split_spec.rb index aaf0581395e..8b30f9c20ef 100644 --- a/spec/unit/functions/split_spec.rb +++ b/spec/unit/functions/split_spec.rb @@ -50,4 +50,10 @@ def split(*args) it 'should handle pattern in Regexp Type form with missing regular expression' do expect(split('ab',type_parser.parse('Regexp'))).to eql(['a', 'b']) end + + it 'should handle sensitive String' do + expect(split(Puppet::Pops::Types::PSensitiveType::Sensitive.new('a,b'), ',')).to be_a(Puppet::Pops::Types::PSensitiveType::Sensitive) + expect(split(Puppet::Pops::Types::PSensitiveType::Sensitive.new('a,b'), /,/)).to be_a(Puppet::Pops::Types::PSensitiveType::Sensitive) + expect(split(Puppet::Pops::Types::PSensitiveType::Sensitive.new('a,b'), type_parser.parse('Regexp[/,/]'))).to be_a(Puppet::Pops::Types::PSensitiveType::Sensitive) + end end