module Sandthorn::BoundedContext::ClassMethods
Public Instance Methods
aggregate_types()
click to toggle source
# File lib/sandthorn/bounded_context.rb, line 4 def aggregate_types @aggregate_list = p_aggregate_types(self) end
Private Instance Methods
classes_in(namespace)
click to toggle source
# File lib/sandthorn/bounded_context.rb, line 22 def classes_in(namespace) namespace.constants.map(&namespace.method(:const_get)).grep(Class) end
modules_in(namespace, classes)
click to toggle source
# File lib/sandthorn/bounded_context.rb, line 26 def modules_in(namespace, classes) namespace.constants.map(&namespace.method(:const_get)).grep(Module).delete_if do |m| classes.include?(m) || m == Sandthorn::BoundedContext::ClassMethods end end
p_aggregate_types(bounded_context_module)
click to toggle source
# File lib/sandthorn/bounded_context.rb, line 10 def p_aggregate_types(bounded_context_module) return [] unless bounded_context_module.respond_to?(:constants) classes = classes_in(bounded_context_module) aggregate_list = classes.select { |item| item.include?(Sandthorn::AggregateRoot) } modules = modules_in(bounded_context_module, classes) aggregate_list += modules.flat_map { |m| p_aggregate_types(m) } aggregate_list end