Class: Gamefic::Query::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/gamefic/query/base.rb

Overview

A base class for entity-based queries that can be applied to responses. Each query represents an attempt to match an argument in a command to a game entity.

Direct Known Subclasses

General, Scoped

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*arguments, ambiguous: false) ⇒ Base

Returns a new instance of Base.

Parameters:

  • arguments (Array<Object>)
  • ambiguous (Boolean) (defaults to: false)

Raises:

  • (ArgumentError)

    if any of the arguments are nil



20
21
22
23
24
25
# File 'lib/gamefic/query/base.rb', line 20

def initialize *arguments, ambiguous: false
  raise ArgumentError, "nil argument in query" if arguments.any?(&:nil?)

  @arguments = arguments
  @ambiguous = ambiguous
end

Instance Attribute Details

#ambiguousBoolean (readonly)

Returns:

  • (Boolean)


14
15
16
# File 'lib/gamefic/query/base.rb', line 14

def ambiguous
  @ambiguous
end

#argumentsArray<Object> (readonly)

Returns:



11
12
13
# File 'lib/gamefic/query/base.rb', line 11

def arguments
  @arguments
end

Instance Method Details

#ambiguous?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/gamefic/query/base.rb', line 39

def ambiguous?
  @ambiguous
end

#precisionInteger

Returns:

  • (Integer)


35
36
37
# File 'lib/gamefic/query/base.rb', line 35

def precision
  @precision ||= calculate_precision
end

#query(subject, token) ⇒ Result

Parameters:

Returns:



30
31
32
# File 'lib/gamefic/query/base.rb', line 30

def query(subject, token)
  raise "#query not implemented for #{self.class}"
end