Sha256: 31f68b153a4599aaf37d92c09210e49ffad8e173247193370a4335c7abc62262
Contents?: true
Size: 1.95 KB
Versions: 1
Compression:
Stored size: 1.95 KB
Contents
# # ActiveFacts Runtime API # RoleValues, manages the set of instances involved in a many_to_one relationship. # # Copyright (c) 2009 Clifford Heath. Read the LICENSE file. # module ActiveFacts module API class RoleValues #:nodoc: # Paranoia. Because of changes in the implementation, I need to catch old code that calls these delegates incorrectly def self.def_single_delegator(accessor, method, *expected_arities) str = %{ def #{method}(*args, &block) if #{expected_arities.size == 0 ? "block" : "!block || !#{expected_arities.inspect}.include?(block.arity)" } raise ArgumentError.new("Arity mismatch on #{name}\##{method}, got \#{block ? block.arity : 'none'} want #{expected_arities.inspect} at \#{caller*"\n\t"})") end #{accessor}.__send__(:#{method}, *args, &block) end } eval(str) end def_single_delegator :@a, :all?, 1 def_single_delegator :@a, :empty? def_single_delegator :@a, :include? def_single_delegator :@a, :inject, 2 def_single_delegator :@a, :select, 1 def_single_delegator :@a, :reject, 1 def_single_delegator :@a, :size def_single_delegator :@a, :sort_by, 1 def_single_delegator :@a, :to_a def_single_delegator :@a, :- # These delegators allow a negative arity in RSpec because the tests test it (to make sure the code doesn't pass too many args) def_single_delegator :@a, :each, *([1] + Array(defined?(::RSpec) ? -2 : nil)) def_single_delegator :@a, :detect, 1, *([1] + Array(defined?(::RSpec) ? -2 : nil)) def_single_delegator :@a, :map, 1, -1 def initialize @a = [] end def +(a) @a.+(a.is_a?(RoleValues) ? [a] : a) end def single size > 1 ? nil : @a[0] end def update(old, value) @a.delete(old) if old @a << value if value end def verbalise "[#{@a.map(&:verbalise).join(", ")}]" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
activefacts-api-0.9.7 | lib/activefacts/api/role_values.rb |