Sha256: b91cf881a0fffc511bed0bdf4b68819365048573ad5ac320bd401407458ca348

Contents?: true

Size: 933 Bytes

Versions: 6

Compression:

Stored size: 933 Bytes

Contents

# frozen_string_literal: true

module Mutant
  class Mutator
    class Node
      module Regexp
        # Character type mutator
        class CharacterType < Node
          map = {
            regexp_digit_type:           :regexp_nondigit_type,
            regexp_hex_type:             :regexp_nonhex_type,
            regexp_space_type:           :regexp_nonspace_type,
            regexp_word_boundary_anchor: :regexp_nonword_boundary_anchor,
            regexp_word_type:            :regexp_nonword_type,
            regexp_xgrapheme_type:       :regexp_linebreak_type
          }

          MAP = IceNine.deep_freeze(map.merge(map.invert))

          handle(*MAP.keys)

          # Mutate to invert character type
          #
          # @return [undefined]
          def dispatch
            emit(s(MAP.fetch(node.type)))
          end
        end # CharacterType
      end # Regexp
    end # Node
  end # Mutator
end # Mutant

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
mutant-0.8.24 lib/mutant/mutator/node/regexp/character_type.rb
mutant-0.8.23 lib/mutant/mutator/node/regexp/character_type.rb
mutant-0.8.22 lib/mutant/mutator/node/regexp/character_type.rb
mutant-0.8.21 lib/mutant/mutator/node/regexp/character_type.rb
mutant-0.8.20 lib/mutant/mutator/node/regexp/character_type.rb
mutant-0.8.19 lib/mutant/mutator/node/regexp/character_type.rb