Module: Foobara::Domain::ModuleExtension
- Included in:
- Module
- Defined in:
- foobara-0.0.130/projects/domain/src/module_extension.rb
Overview
TODO: should we just couple domain project and commands project to simplify this connection? TODO: move this stuff to extensions/ directory
Defined Under Namespace
Classes: CannotBeOrganizationAndDomainAtSameTime
Instance Method Summary
collapse
Instance Method Details
#foobara_domain! ⇒ Object
[View source]
11
12
13
14
15
16
17
18
19
20
21
22
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
# File 'foobara-0.0.130/projects/domain/src/module_extension.rb', line 11
def foobara_domain!
if foobara_organization?
raise CannotBeOrganizationAndDomainAtSameTime
end
unless is_a?(Namespace::IsNamespace)
foobara_namespace!
foobara_autoset_namespace!(default_namespace: Foobara::GlobalOrganization)
foobara_autoset_scoped_path!
parent = foobara_parent_namespace
parent.foobara_register(self)
self.foobara_parent_namespace = parent
end
include(DomainModuleExtension)
children = foobara_children
children = children.sort_by { |child| child.scoped_path.size }
children.each do |child|
next unless child.is_a?(Types::Type)
types_mod_path = scoped_full_path.dup
unless child.scoped_path.first == "Types"
types_mod_path << "Types"
end
types_mod_path += child.scoped_path[..-2]
types_mod = Util.make_module_p(types_mod_path.join("::"))
if child.scoped_short_name =~ /^[a-z]/
unless types_mod.respond_to?(child.scoped_short_name)
types_mod.singleton_class.define_method child.scoped_short_name do
child
end
unless types_mod.instance_variable_defined?(:@foobara_lowercase_constants)
types_mod.instance_variable_set(:@foobara_lowercase_constants, [])
end
types_mod.instance_variable_get(:@foobara_lowercase_constants) << child.scoped_short_name
end
else
value = if types_mod.const_defined?(child.scoped_short_name, false)
types_mod.const_get(child.scoped_short_name, false)
end
if value != child
types_mod.send(:remove_const, child.scoped_short_name) if value
new_value = if child.extends?("::model")
child.target_class
else
child
end
types_mod.const_set(child.scoped_short_name, new_value)
end
end
end
end
|
#foobara_domain? ⇒ Boolean
[View source]
109
110
111
|
# File 'foobara-0.0.130/projects/domain/src/module_extension.rb', line 109
def foobara_domain?
false
end
|
#foobara_organization! ⇒ Object
[View source]
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
# File 'foobara-0.0.130/projects/domain/src/module_extension.rb', line 88
def foobara_organization!
if foobara_domain?
raise CannotBeOrganizationAndDomainAtSameTime
end
include(OrganizationModuleExtension)
unless is_a?(Namespace::IsNamespace)
foobara_namespace!
self.scoped_namespace = Namespace.global
foobara_autoset_scoped_path!(make_top_level: true)
parent = foobara_parent_namespace
parent.foobara_register(self)
self.foobara_parent_namespace = parent
end
end
|
#foobara_organization? ⇒ Boolean
[View source]
113
114
115
|
# File 'foobara-0.0.130/projects/domain/src/module_extension.rb', line 113
def foobara_organization?
false
end
|