Class: Legion::Extensions::Absorbers::Matchers::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/legion/extensions/absorbers/matchers/base.rb

Direct Known Subclasses

File

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.registryObject (readonly)

Returns the value of attribute registry.



11
12
13
# File 'lib/legion/extensions/absorbers/matchers/base.rb', line 11

def registry
  @registry
end

Class Method Details

.for_type(type) ⇒ Object



27
28
29
# File 'lib/legion/extensions/absorbers/matchers/base.rb', line 27

def for_type(type)
  @registry[type&.to_sym]
end

.inherited(subclass) ⇒ Object



13
14
15
16
17
18
19
20
21
# File 'lib/legion/extensions/absorbers/matchers/base.rb', line 13

def inherited(subclass)
  super
  TracePoint.new(:end) do |tp|
    if tp.self == subclass
      register(subclass) if subclass.respond_to?(:type) && subclass.type
      tp.disable
    end
  end.enable
end

.match?(_pattern, _input) ⇒ Boolean

Returns:

  • (Boolean)

Raises:

  • (NotImplementedError)


33
34
35
# File 'lib/legion/extensions/absorbers/matchers/base.rb', line 33

def match?(_pattern, _input)
  raise NotImplementedError, "#{name} must implement .match?"
end

.register(matcher_class) ⇒ Object



23
24
25
# File 'lib/legion/extensions/absorbers/matchers/base.rb', line 23

def register(matcher_class)
  @registry[matcher_class.type] = matcher_class
end

.typeObject



31
# File 'lib/legion/extensions/absorbers/matchers/base.rb', line 31

def type = nil