diff --git a/lib/puppet/parser/functions/unique.rb b/lib/puppet/parser/functions/unique.rb deleted file mode 100644 index 7efdaa39e..000000000 --- a/lib/puppet/parser/functions/unique.rb +++ /dev/null @@ -1,51 +0,0 @@ -# frozen_string_literal: true - -# -# unique.rb -# -module Puppet::Parser::Functions - newfunction(:unique, type: :rvalue, doc: <<-DOC - @summary - This function will remove duplicates from strings and arrays. - - @return - String or array with duplicates removed - - @example **Usage** - - unique("aabbcc") - Will return: abc - - You can also use this with arrays: - - unique(["a","a","b","b","c","c"]) - This returns: ["a","b","c"] - - DOC - ) do |arguments| - if Puppet::Util::Package.versioncmp(Puppet.version, '5.0.0') >= 0 - function_deprecation([:unique, 'This method is deprecated, please use the core puppet unique function. There is further documentation for the function in the release notes of Puppet 5.0.']) - end - - raise(Puppet::ParseError, "unique(): Wrong number of arguments given (#{arguments.size} for 1)") if arguments.empty? - - value = arguments[0] - - unless value.is_a?(Array) || value.is_a?(String) - raise(Puppet::ParseError, 'unique(): Requires either array or string to work with') - end - - result = value.clone - - string = value.is_a?(String) ? true : false - - # We turn any string value into an array to be able to shuffle ... - result = string ? result.split('') : result - result = result.uniq # Remove duplicates ... - result = string ? result.join : result - - return result - end -end - -# vim: set ts=2 sw=2 et : diff --git a/spec/functions/unique_spec.rb b/spec/functions/unique_spec.rb deleted file mode 100644 index 92234fae0..000000000 --- a/spec/functions/unique_spec.rb +++ /dev/null @@ -1,33 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -describe 'unique' do - if Puppet.version.to_f < 5.0 - describe 'signature validation' do - it { is_expected.not_to eq(nil) } - it { is_expected.to run.with_params.and_raise_error(Puppet::ParseError, %r{wrong number of arguments}i) } - it { - pending('Current implementation ignores parameters after the first.') - is_expected.to run.with_params([], 'extra').and_raise_error(Puppet::ParseError, %r{wrong number of arguments}i) - } - it { is_expected.to run.with_params({}).and_raise_error(Puppet::ParseError, %r{Requires either array or string to work}) } - it { is_expected.to run.with_params(1).and_raise_error(Puppet::ParseError, %r{Requires either array or string to work}) } - it { is_expected.to run.with_params(true).and_raise_error(Puppet::ParseError, %r{Requires either array or string to work}) } - end - - context 'when called with an array' do - it { is_expected.to run.with_params([]).and_return([]) } - it { is_expected.to run.with_params(['a']).and_return(['a']) } - it { is_expected.to run.with_params(['a', 'b', 'a']).and_return(['a', 'b']) } - it { is_expected.to run.with_params(['ã', 'ъ', 'ã']).and_return(['ã', 'ъ']) } - end - - context 'when called with a string' do - it { is_expected.to run.with_params('').and_return('') } - it { is_expected.to run.with_params('a').and_return('a') } - it { is_expected.to run.with_params('aaba').and_return('ab') } - it { is_expected.to run.with_params('ããъã').and_return('ãъ') } - end - end -end