lib/noticent/definitions/scope.rb in noticent-0.0.1.pre.pre vs lib/noticent/definitions/scope.rb in noticent-0.0.1
- old
+ new
@@ -3,25 +3,29 @@
module Noticent
module Definitions
class Scope
attr_reader :name
attr_reader :payload_class
+ attr_reader :check_constructor
- def initialize(config, name, payload_class: nil)
+ def initialize(config, name, payload_class: nil, check_constructor: true)
@config = config
@name = name
- suggeste_name = config.base_module_name + "::#{name.capitalize}Payload"
- @payload_class = payload_class.nil? ? suggeste_name.constantize : payload_class
+ @check_constructor = check_constructor
+
+ sub_module = @config.use_sub_modules ? '::Payloads::' : '::'
+ suggested_name = config.base_module_name + sub_module + "#{name.capitalize}Payload"
+ @payload_class = payload_class.nil? ? suggested_name.constantize : payload_class
rescue NameError
- raise BadConfiguration, "scope #{suggeste_name} class not found"
+ raise BadConfiguration, "scope #{suggested_name} class not found"
end
- def alert(name, &block)
+ def alert(name, constructor_name: nil, &block)
alerts = @config.instance_variable_get(:@alerts) || {}
raise BadConfiguration, "alert '#{name}' already defined" if alerts.include? name
- alert = Noticent::Definitions::Alert.new(@config, name: name, scope: self)
+ alert = Noticent::Definitions::Alert.new(@config, name: name, scope: self, constructor_name: constructor_name.nil? ? name : constructor_name)
@config.hooks&.run(:pre_alert_registration, alert)
alert.instance_eval(&block) if block_given?
@config.hooks&.run(:post_alert_registration, alert)
alerts[name] = alert