Ruby < 1.8.7 doesn’t have this method but we use it in tests
# File lib/puppet/util/monkey_patches.rb, line 109 def combination(num) return [] if num < 0 || num > size return [[]] if num == 0 return map{|e| [e] } if num == 1 tmp = self.dup self[0, size - (num - 1)].inject([]) do |ret, e| tmp.shift ret += tmp.combination(num - 1).map{|a| a.unshift(e) } end end
Ruby 1.8.5 lacks `drop`, which we don’t want to lose.
# File lib/puppet/util/monkey_patches.rb, line 123 def drop(n) n = n.to_int raise ArgumentError, "attempt to drop negative size" if n < 0 slice(n, length - n) or [] end
# File lib/puppet/util/zaml.rb, line 361 def to_zaml(z) z.first_time_only(self) { z.nested { if empty? z.emit('[]') else each { |v| z.nl('- '); v.to_zaml(z) } end } } end