lib/gamefic/scanner/base.rb
# frozen_string_literal: true module Gamefic module Scanner # A base class for scanners that match tokens to entities. # class Base # @return [Array<Entity>] attr_reader :selection # @return [String] attr_reader :token # @param selection [Array<Entity>] # @param token [String] def initialize selection, token @selection = selection @token = token end # @return [Result] def scan unmatched_result end # @param selection [Array<Entity>] # @param token [String] # @return [Result] def self.scan selection, token new(selection, token).scan end private def unmatched_result Result.unmatched(selection, token, self.class) end def matched_result matched, remainder Result.new(selection, token, matched, remainder, self.class) end end end end