File: refcalls_spec.rb

package info (click to toggle)
ruby-regexp-parser 2.6.1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 968 kB
  • sloc: ruby: 6,396; sh: 12; makefile: 6
file content (60 lines) | stat: -rw-r--r-- 2,713 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
require 'spec_helper'

RSpec.describe('RefCall lexing') do
  # Traditional numerical group back-reference
  include_examples 'lex', '(abc)\1',
    3 => [:backref, :number,                '\1',         5,  7, 0, 0, 0]

  # Group back-references, named, numbered, and relative
  include_examples 'lex', '(?<X>abc)\k<X>',
    3 => [:backref, :name_ref,              '\k<X>',      9, 14, 0, 0, 0]
  include_examples 'lex', "(?<X>abc)\\k'X'",
    3 => [:backref, :name_ref,              "\\k'X'",     9, 14, 0, 0, 0]

  include_examples 'lex', '(abc)\k<1>',
    3 => [:backref, :number_ref,            '\k<1>',      5, 10, 0, 0, 0]
  include_examples 'lex', "(abc)\\k'1'",
    3 => [:backref, :number_ref,            "\\k'1'",     5, 10, 0, 0, 0]

  include_examples 'lex', '(abc)\k<-1>',
    3 => [:backref, :number_rel_ref,        '\k<-1>',     5, 11, 0, 0, 0]
  include_examples 'lex', "(abc)\\k'-1'",
    3 => [:backref, :number_rel_ref,        "\\k'-1'",    5, 11, 0, 0, 0]

  # Sub-expression invocation, named, numbered, and relative
  include_examples 'lex', '(?<X>abc)\g<X>',
    3 => [:backref, :name_call,             '\g<X>',      9, 14, 0, 0, 0]
  include_examples 'lex', "(?<X>abc)\\g'X'",
    3 => [:backref, :name_call,             "\\g'X'",     9, 14, 0, 0, 0]

  include_examples 'lex', '(abc)\g<1>',
    3 => [:backref, :number_call,           '\g<1>',      5, 10, 0, 0, 0]
  include_examples 'lex', "(abc)\\g'1'",
    3 => [:backref, :number_call,           "\\g'1'",     5, 10, 0, 0, 0]

  include_examples 'lex', '\g<0>',
    0 => [:backref, :number_call,           '\g<0>',      0,  5, 0, 0, 0]
  include_examples 'lex', "\\g'0'",
    0 => [:backref, :number_call,           "\\g'0'",     0,  5, 0, 0, 0]

  include_examples 'lex', '(abc)\g<-1>',
    3 => [:backref, :number_rel_call,       '\g<-1>',     5, 11, 0, 0, 0]
  include_examples 'lex', "(abc)\\g'-1'",
    3 => [:backref, :number_rel_call,       "\\g'-1'",    5, 11, 0, 0, 0]

  include_examples 'lex', '(abc)\g<+1>',
    3 => [:backref, :number_rel_call,       '\g<+1>',     5, 11, 0, 0, 0]
  include_examples 'lex', "(abc)\\g'+1'",
    3 => [:backref, :number_rel_call,       "\\g'+1'",    5, 11, 0, 0, 0]

  # Group back-references, with nesting level
  include_examples 'lex', '(?<X>abc)\k<X-0>',
    3 => [:backref, :name_recursion_ref,    '\k<X-0>',    9, 16, 0, 0, 0]
  include_examples 'lex', "(?<X>abc)\\k'X-0'",
    3 => [:backref, :name_recursion_ref,    "\\k'X-0'",   9, 16, 0, 0, 0]

  include_examples 'lex', '(abc)\k<1-0>',
    3 => [:backref, :number_recursion_ref,  '\k<1-0>',    5, 12, 0, 0, 0]
  include_examples 'lex', "(abc)\\k'1-0'",
    3 => [:backref, :number_recursion_ref,  "\\k'1-0'",   5, 12, 0, 0, 0]
end