Module: Predicate::LogicExtension
- Included in:
- TestLogic
- Defined in:
- lib/carat-dev/predicate/predicate.rb
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.permutations(arr, prepend = []) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/carat-dev/predicate/predicate.rb', line 76 def self.permutations( arr, prepend=[] ) head = arr[0] tail = arr[1..-1] perms = [] if tail.empty? head.each { |h| perms << (prepend + [h]) } else head.each { |h| perms = perms | permutations(tail, (prepend + [h])) } end return perms end |
Instance Method Details
#method_added(st) ⇒ Object
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/carat-dev/predicate/predicate.rb', line 88 def method_added( st ) #if st.to_s[-1..-1] != '?' && !method_defined?("#{st}_?") if !@prevent_method_added @prevent_method_added = true #puts "Defining predicate #{st}" alias_method("#{st}_?".intern, st) module_eval %Q{ def #{st}(*args) predicate(:#{st}, *args) end def #{st}?(*args) targs = args.collect { |a| Tester.new(a) } #{st}(*targs) end } @prevent_method_added = false end end |