Revert "Merge pull request #130 from jhoblitt/has_element"

This reverts commit f7a18189ec, reversing
changes made to 36a7b29630.

I'm reverting this change because of concerns raised by Peter Meier that
it duplicates the "in" operator in the DSL.  The "in" operator is new
information that I did not posses when I made the decision to merge.
Because of this new information I'm un-merging and continuing the
discussion in the comments of
https://projects.puppetlabs.com/issues/19272

Reference: GH-130
This commit is contained in:
Jeff McCune 2013-02-15 11:56:16 -08:00
parent f7a18189ec
commit a45d4f1307
3 changed files with 0 additions and 79 deletions

View file

@ -1,28 +0,0 @@
module Puppet::Parser::Functions
newfunction(:has_element, :type => :rvalue, :doc => <<-'ENDHEREDOC') do |args|
Determine if an array has an element with a matching value.
Example:
$my_array = ['key_one']
if has_element($my_array, 'key_two') {
notice('we will not reach here')
}
if has_element($my_array, 'key_one') {
notice('this will be printed')
}
ENDHEREDOC
unless args.length == 2
raise Puppet::ParseError, ("has_element(): wrong number of arguments (#{args.length}; must be 2)")
end
unless args[0].is_a?(Array)
raise Puppet::ParseError, "has_element(): expects the first argument to be an array, got #{args[0].inspect} which is of type #{args[0].class}"
end
args[0].include?(args[1])
end
end

View file

@ -1,42 +0,0 @@
#! /usr/bin/env ruby -S rspec
require 'spec_helper'
describe Puppet::Parser::Functions.function(:has_element) do
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
describe 'when calling has_element from puppet' do
it "should not compile when no arguments are passed" do
pending("Fails on 2.6.x, see bug #15912") if Puppet.version =~ /^2\.6\./
Puppet[:code] = '$x = has_element()'
expect {
scope.compiler.compile
}.to raise_error(Puppet::ParseError, /wrong number of arguments/)
end
it "should not compile when 1 argument is passed" do
pending("Fails on 2.6.x, see bug #15912") if Puppet.version =~ /^2\.6\./
Puppet[:code] = "$x = has_element('foo')"
expect {
scope.compiler.compile
}.to raise_error(Puppet::ParseError, /wrong number of arguments/)
end
it "should require the first value to be an Array" do
pending("Fails on 2.6.x, see bug #15912") if Puppet.version =~ /^2\.6\./
Puppet[:code] = "$x = has_element('foo', 'bar')"
expect {
scope.compiler.compile
}.to raise_error(Puppet::ParseError, /expects the first argument to be an array/)
end
end
describe 'when calling the function has_element from a scope instance' do
it 'should detect existing elements' do
scope.function_has_element([['one'], 'one']).should be_true
end
it 'should detect existing elements' do
scope.function_has_element([['one'], 'two']).should be_false
end
end
end

View file

@ -1,9 +0,0 @@
include stdlib
$my_array = ['key_one']
if has_element($my_array, 'key_two') {
notice('we will not reach here')
}
if has_element($my_array, 'key_one') {
notice('this will be printed')
}