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
- .processors ⇒ Array<Class<Base>>
-
.scan(selection, token, use = processors) ⇒ Result?
Scan entities against a token.
-
.strictness(processor) ⇒ Integer
A measure of a scan processor’s strictness based on its order of use.
-
.use(*klasses) ⇒ Array<Class<Scanner::Base>>
Select the scanner processors to use in entity queries.
Class Method Details
.processors ⇒ Array<Class<Base>>
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.
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.
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.
40 41 42 |
# File 'lib/gamefic/scanner.rb', line 40 def self.use *klasses processors.replace klasses.flatten end |