Class: ActiveFacts::API::RoleValues
- Defined in:
- lib/activefacts/api/role_values.rb
Overview
:nodoc:
Instance Attribute Summary collapse
-
#sort ⇒ Object
Returns the value of attribute sort.
Class Method Summary collapse
Instance Method Summary collapse
- #+(a) ⇒ Object
- #add_instance(value, key) ⇒ Object
- #delete_instance(value, key) ⇒ Object
- #form_key(a) ⇒ Object
- #include?(v) ⇒ Boolean
-
#initialize(sort = false) ⇒ RoleValues
constructor
A new instance of RoleValues.
- #keys ⇒ Object
- #single ⇒ Object
- #to_a ⇒ Object
- #verbalise ⇒ Object
Constructor Details
#initialize(sort = false) ⇒ RoleValues
Returns a new instance of RoleValues.
13 14 15 16 |
# File 'lib/activefacts/api/role_values.rb', line 13 def initialize sort = false @sort = !!(sort || ENV[@@af_sort_name ||= "ACTIVEFACTS_SORT"]) @a = @sort ? RBTree.new : [] end |
Instance Attribute Details
#sort ⇒ Object
Returns the value of attribute sort.
11 12 13 |
# File 'lib/activefacts/api/role_values.rb', line 11 def sort @sort end |
Class Method Details
.def_single_delegator(accessor, method, *expected_arities) ⇒ Object
Paranoia. Because of changes in the implementation, I need to catch old code that calls these delegates incorrectly
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/activefacts/api/role_values.rb', line 73 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 if @sort #{accessor}.values.__send__(:#{method}, *args, &block) else #{accessor}.__send__(:#{method}, *args, &block) end end } eval(str) end |
Instance Method Details
#+(a) ⇒ Object
18 19 20 21 22 23 24 |
# File 'lib/activefacts/api/role_values.rb', line 18 def +(a) if @sort @a.values.+(a.is_a?(RoleValues) ? [a] : a) else @a.+(a.is_a?(RoleValues) ? [a] : a) end end |
#add_instance(value, key) ⇒ Object
42 43 44 45 46 47 48 |
# File 'lib/activefacts/api/role_values.rb', line 42 def add_instance(value, key) if @sort @a[form_key(key)] = value else @a << value end end |
#delete_instance(value, key) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/activefacts/api/role_values.rb', line 50 def delete_instance(value, key) if @sort deleted = @a.delete(form_key(key)) else deleted = @a.delete(value) end # Test code: unless deleted p @a p value debugger true end end |
#form_key(a) ⇒ Object
38 39 40 |
# File 'lib/activefacts/api/role_values.rb', line 38 def form_key a KeyArray.new(Array(a)) end |
#include?(v) ⇒ Boolean
89 90 91 92 93 94 95 |
# File 'lib/activefacts/api/role_values.rb', line 89 def include? v if @sort @a.include?(form_key(v)) else @a.include?(v) end end |
#keys ⇒ Object
30 31 32 |
# File 'lib/activefacts/api/role_values.rb', line 30 def keys @sort ? @a.keys : @a end |
#single ⇒ Object
34 35 36 |
# File 'lib/activefacts/api/role_values.rb', line 34 def single size > 1 ? nil : to_a[0] end |
#to_a ⇒ Object
26 27 28 |
# File 'lib/activefacts/api/role_values.rb', line 26 def to_a @sort ? @a.values : @a end |
#verbalise ⇒ Object
67 68 69 70 |
# File 'lib/activefacts/api/role_values.rb', line 67 def verbalise a = @sort ? @a.values : @a "[#{a.map(&:verbalise).join(", ")}]" end |