23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/activefacts/generators/traits/oo.rb', line 23
def oo_role_definition
return if fact_type.entity_type
if fact_type.all_role.size == 1
return " maybe :#{preferred_role_name}\n"
elsif fact_type.all_role.size != 2
return end
if fact_type.is_a?(ActiveFacts::Metamodel::TypeInheritance)
return
end
return unless is_functional
counterpart_role = fact_type.all_role.select{|r| r != self}[0]
counterpart_type = counterpart_role.object_type
counterpart_role_name = counterpart_role.preferred_role_name
counterpart_type_default_role_name = counterpart_type.oo_default_role_name
one_to_one = counterpart_role.is_functional
return if one_to_one &&
false
role_method = preferred_role_name
counterpart_role_method = one_to_one ? role_method : "all_"+role_method
if counterpart_role_name != counterpart_type.oo_default_role_name and
role_method == self.object_type.oo_default_role_name
counterpart_role_method += "_as_#{counterpart_role_name}"
end
role_name = role_method
role_name = nil if role_name == object_type.oo_default_role_name
as_binary(counterpart_role_name, counterpart_type, is_mandatory, one_to_one, nil, role_name, counterpart_role_method)
end
|