class Substation::DSL::Guard

A guard used for rejecting invalid names in {DSL}

Public Class Methods

new(_reserved_names = EMPTY_ARRAY) click to toggle source

Initialize a new instance

@param [Enumerable<Symbol>] reserved_names

a list of reserved names

@return [undefined]

@api private

Calls superclass method
# File lib/substation/dsl/guard.rb, line 20
def initialize(_reserved_names = EMPTY_ARRAY)
  super
end

Public Instance Methods

call(name, registry) click to toggle source

Raise if {#name} is either reserved or already registered

@param [Symbol] name

the name to test

@param [#include?] registry

the registry to test

@raise [AlreadyRegisteredError]

if +name+ is already registered

@raise [ReservedNameError]

if +name+ is a reserved name

@return [undefined]

@api private

# File lib/substation/dsl/guard.rb, line 41
def call(name, registry)
  raise_if_already_registered(name, registry)
  raise_if_reserved(name)
end

Private Instance Methods

raise_if_already_registered(name, registry) click to toggle source

Raise if name is already included in {#names}

@param [Symbol] name

the name to test

@raise [AlreadyRegisteredError]

@return [undefined]

@api private

# File lib/substation/dsl/guard.rb, line 58
def raise_if_already_registered(name, registry)
  if registry.include?(name)
    raise AlreadyRegisteredError.new(name)
  end
end
raise_if_reserved(name) click to toggle source

Raise if {Chain::DSL.methods} include name

@param [Symbol] name

the name to test

@raise [ReservedNameError]

@return [undefined]

@api private

# File lib/substation/dsl/guard.rb, line 74
def raise_if_reserved(name)
  if reserved_names.include?(name)
    raise ReservedNameError.new(name)
  end
end