class Ducalis::ComplexRegex
Constants
- COMPLEX_TYPES_COSTS
- DEFAULT_COST
- OFFENSE
Public Instance Methods
on_begin(node)
click to toggle source
# File lib/ducalis/cops/complex_regex.rb, line 21 def on_begin(node) regex_using(node).each do |regex_desc| next if formatted?(regex_desc) || simple?(regex_desc.first) add_offense(regex_desc.first, :expression, OFFENSE) end end
Private Instance Methods
formatted?(regex_desc)
click to toggle source
# File lib/ducalis/cops/complex_regex.rb, line 43 def formatted?(regex_desc) regex_desc.size > 1 end
maximal_complexity()
click to toggle source
# File lib/ducalis/cops/complex_regex.rb, line 39 def maximal_complexity cop_config['MaxComplexity'] end
simple?(regex_node)
click to toggle source
# File lib/ducalis/cops/complex_regex.rb, line 31 def simple?(regex_node) Regexp::Scanner.scan( Regexp.new(regex_node.source) ).map do |type, _, _, _, _| COMPLEX_TYPES_COSTS.fetch(type, DEFAULT_COST) end.inject(:+) <= maximal_complexity end