Module: OOP
- Defined in:
- lib/oop.rb,
lib/oop/cell.rb,
lib/oop/tools.rb,
lib/oop/value.rb,
lib/oop/version.rb,
lib/oop/boundary.rb,
lib/oop/basic_rules.rb,
lib/oop/cell_object.rb,
lib/oop/value_object.rb,
lib/oop/non_value_arg.rb,
lib/oop/value_provider.rb
Defined Under Namespace
Modules: CellObject, Tools, ValueObject
Classes: BasicRules, Boundary, Cell, NonValueArg, Value, ValueProvider
Constant Summary
collapse
- VERSION =
"2.0.0"
Class Method Summary
collapse
Class Method Details
.Cell(*rules_and_name_to_klass) ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/oop/cell.rb', line 12
def Cell(*rules_and_name_to_klass)
rules, name_to_klass = if rules_and_name_to_klass.size > 1
rules_and_name_to_klass
else
[BasicRules, rules_and_name_to_klass.first]
end
c = Class.new(Cell)
c.class_exec do
define_method(:_rules) { rules.new }
end
name_to_klass.each do |name, klass|
c.class_exec do
define_method(name) { klass }
end
end
c
end
|
.Value(*rules_and_name_to_klass) ⇒ Object
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/oop/value.rb', line 19
def Value(*rules_and_name_to_klass)
rules, name_to_klass = if rules_and_name_to_klass.size > 1
rules_and_name_to_klass
else
[BasicRules, rules_and_name_to_klass.first]
end
c = Class.new(Value)
c.class_exec do
define_method(:_rules) { rules.new }
end
name_to_klass.each do |name, klass|
if !(klass.is_a?(Value) || klass.ancestors.include?(Value) || rules.new.trusted_values.include?(klass))
raise "imported non-value #{klass}"
end
c.class_exec do
define_method(name) { klass }
end
end
c
end
|