Module: Gamefic::Scanner

Defined in:
lib/gamefic/scanner.rb,
lib/gamefic/scanner/base.rb,
lib/gamefic/scanner/fuzzy.rb,
lib/gamefic/scanner/result.rb,
lib/gamefic/scanner/strict.rb,
lib/gamefic/scanner/nesting.rb,
lib/gamefic/scanner/fuzzy_nesting.rb

Overview

A module for matching objects to tokens.

Defined Under Namespace

Classes: Base, Fuzzy, FuzzyNesting, Nesting, Result, Strict

Constant Summary collapse

DEFAULT_PROCESSORS =
[Nesting, Strict, FuzzyNesting, Fuzzy].freeze

Class Method Summary collapse

Class Method Details

.processorsArray<Class<Base>>

Returns:



45
46
47
# File 'lib/gamefic/scanner.rb', line 45

def self.processors
  @processors ||= []
end

.scan(selection, token, use = processors) ⇒ Result?

Scan entities against a token.

Parameters:

Returns:



22
23
24
25
26
27
28
29
# File 'lib/gamefic/scanner.rb', line 22

def self.scan(selection, token, use = processors)
  result = nil
  use.each do |processor|
    result = processor.scan(selection, token)
    break result unless result.matched.empty?
  end
  result
end

.strictness(processor) ⇒ Integer

A measure of a scan processor’s strictness based on its order of use. Higher values indicate higher strictness.

Returns:

  • (Integer)


53
54
55
# File 'lib/gamefic/scanner.rb', line 53

def self.strictness(processor)
  (processors.length - (processors.find_index(processor) || processors.length)) * 100
end

.use(*klasses) ⇒ Array<Class<Scanner::Base>>

Select the scanner processors to use in entity queries. Each processor will be used in order until one of them returns matches. The default processor list is ‘DEFAULT_PROCESSORS`.

Processor classes should be in order from most to least strict rules for matching tokens to entities.

Parameters:

Returns:



40
41
42
# File 'lib/gamefic/scanner.rb', line 40

def self.use *klasses
  processors.replace klasses.flatten
end