class JsRegex::Converter::BackreferenceConverter

Template class implementation.

Private Instance Methods

convert_call() click to toggle source
# File lib/js_regex/converter/backreference_converter.rb, line 29
def convert_call
  if expression.respond_to?(:number) && expression.number.equal?(0)
    return warn_of_unsupported_feature('whole-pattern recursion')
  end
  context.increment_local_capturing_group_count
  convert_expression(expression.referenced_expression.unquantified_clone)
end
convert_data() click to toggle source
# File lib/js_regex/converter/backreference_converter.rb, line 11
def convert_data
  case subtype
  when :name_ref, :number, :number_ref, :number_rel_ref then convert_ref
  when :name_call, :number_call, :number_rel_call       then convert_call
  else # name_recursion_ref, number_recursion_ref, ...
    warn_of_unsupported_feature
  end
end
convert_ref() click to toggle source
# File lib/js_regex/converter/backreference_converter.rb, line 20
def convert_ref
  position = context.new_capturing_group_position(target_position)
  Node.new('\\', Node.new(position.to_s, type: :backref_num))
end
target_position() click to toggle source
# File lib/js_regex/converter/backreference_converter.rb, line 25
def target_position
  expression.referenced_expression.number
end