Skip to content

Commit

Permalink
Merge pull request #365 from dalen/range-integers
Browse files Browse the repository at this point in the history
Make the range function work with integers
  • Loading branch information
hunner committed Nov 13, 2014
2 parents b80c432 + af0a277 commit b6830f1
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 13 deletions.
26 changes: 13 additions & 13 deletions lib/puppet/parser/functions/range.rb
Expand Up @@ -65,21 +65,21 @@ module Puppet::Parser::Functions
end
end

# Check whether we have integer value if so then make it so ...
if start.match(/^\d+$/)
start = start.to_i
stop = stop.to_i
else
start = start.to_s
stop = stop.to_s
end
# Check whether we have integer value if so then make it so ...
if start.to_s.match(/^\d+$/)
start = start.to_i
stop = stop.to_i
else
start = start.to_s
stop = stop.to_s
end

range = case type
when /^(\.\.|\-)$/ then (start .. stop)
when /^(\.\.\.)$/ then (start ... stop) # Exclusive of last element ...
end
range = case type
when /^(\.\.|\-)$/ then (start .. stop)
when /^(\.\.\.)$/ then (start ... stop) # Exclusive of last element ...
end

result = range.step(step).collect { |i| i } # Get them all ... Pokemon ...
result = range.step(step).collect { |i| i } # Get them all ... Pokemon ...

return result
end
Expand Down
16 changes: 16 additions & 0 deletions spec/functions/range_spec.rb
Expand Up @@ -67,4 +67,20 @@
expect(scope.function_range(["00", "10"])).to eq expected
end
end

describe 'with a numeric range' do
it "returns a range of numbers" do
expected = (1..10).to_a
expect(scope.function_range([1,10])).to eq expected
end
it "returns a range of numbers with step parameter" do
expected = (1..10).step(2).to_a
expect(scope.function_range([1,10,2])).to eq expected
end
it "works with mixed numeric like strings and numeric arguments" do
expected = (1..10).to_a
expect(scope.function_range(['1',10])).to eq expected
expect(scope.function_range([1,'10'])).to eq expected
end
end
end

0 comments on commit b6830f1

Please sign in to comment.