free_mutant/lib/mutant/mutator/node/when.rb
Markus Schirp a19f3b1691 Nuke UTF-8 encoding headers
* I do not use 1.9.3
* Also keeping them in each file increases mental overhead (true it *can* be autoamted)
* None of the files encodes NON ASCII chars.
* I do not expect it makes any difference, since nobody programmatically
  will consume strings generated by mutant under the assumption they are UTF-8 encoded.
* 1.9.3 Users have to deal with the encoding fuckup under ruby anyways.
2014-06-09 15:37:48 +00:00

78 lines
1.4 KiB
Ruby

module Mutant
class Mutator
class Node
# Mutator for when nodes
class When < self
handle(:when)
private
# Emit mutations
#
# @return [undefined]
#
# @api private
#
def dispatch
if body
mutate_body
else
emit_child_update(body_index, RAISE)
end
mutate_conditions
end
# Emit condition mutations
#
# @return [undefined]
#
# @api private
#
def mutate_conditions
conditions = children.length - 1
children[0..-2].each_index do |index|
delete_child(index) if conditions > 1
mutate_child(index)
end
end
# Emit body mutations
#
# @return [undefined]
#
# @api private
#
def mutate_body
mutate_child(body_index)
end
# Return body node
#
# @return [Parser::AST::Node]
# if body is present
#
# @return [nil]
# otherwise
#
# @api private
#
def body
children[body_index]
end
# Return body index
#
# @return [Fixnum]
#
# @api private
#
def body_index
children.length - 1
end
end # When
end # Node
end # Mutator
end # Mutant