free_mutant/lib/mutant/matcher.rb

56 lines
984 B
Ruby
Raw Normal View History

module Mutant
# Abstract matcher to find ASTs to mutate
class Matcher
2012-10-15 08:36:15 -04:00
include Enumerable, AbstractClass, Adamantium
extend DescendantsTracker
2012-08-01 12:34:03 -04:00
# Enumerate subjects
#
# @api private
#
# @return [undefined]
#
abstract_method :each
# Return identification
#
# @return [String
#
# @api private
#
abstract_method :identification
# Return matcher
#
# @param [String] input
#
# @return [nil]
# returns nil as default implementation
#
# @api private
#
def self.parse(input)
nil
end
# Return match from string
#
# @param [String] input
#
# @return [Matcher]
# returns matcher input if successful
#
# @return [nil]
# returns nil otherwise
#
def self.from_string(input)
descendants.each do |descendant|
matcher = descendant.parse(input)
return matcher if matcher
end
nil
end
end
end