Sha256: a2433f83cb633e912170aebb2fc6932f925ec30e81f4f3095acc576afa308d5e
Contents?: true
Size: 1.3 KB
Versions: 2
Compression:
Stored size: 1.3 KB
Contents
# frozen_string_literal: true module Mutant module AST # Regexp source mapper module Regexp UNSUPPORTED_EXPRESSION_TYPE = :conditional private_constant(*constants(false)) # Parse regex string into expression # # @param regexp [String] # # @return [Regexp::Expression] def self.parse(regexp) ::Regexp::Parser.parse(regexp) end # Check if expression is supported by mapper # # @param expression [Regexp::Expression] # # @return [Boolean] def self.supported?(expression) expression.terminal? || expression.all? do |subexp| !subexp.type.equal?(UNSUPPORTED_EXPRESSION_TYPE) && supported?(subexp) end end # Convert expression into ast node # # @param expression [Regexp::Expression] # # @return [Parser::AST::Node] def self.to_ast(expression) ast_type = :"regexp_#{expression.token}_#{expression.type}" Transformer.lookup(ast_type).to_ast(expression) end # Convert node into expression # # @param node [Parser::AST::Node] # # @return [Regexp::Expression] def self.to_expression(node) Transformer.lookup(node.type).to_expression(node) end end # Regexp end # AST end # Mutant
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
mutant-0.8.18 | lib/mutant/ast/regexp.rb |
mutant-0.8.17 | lib/mutant/ast/regexp.rb |