Diff of the two buildlogs: -- --- b1/build.log 2025-11-22 19:39:27.718438757 +0000 +++ b2/build.log 2025-11-22 19:40:04.086478726 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Fri Dec 25 14:01:56 -12 2026 -I: pbuilder-time-stamp: 1798250516 +I: Current time: Sun Nov 23 09:39:29 +14 2025 +I: pbuilder-time-stamp: 1763840369 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/forky-reproducible-base.tgz] I: copying local configuration @@ -22,53 +22,85 @@ dpkg-source: info: unpacking ruby-regexp-parser_2.6.1-1.debian.tar.xz I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/1048199/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/108290/tmp/hooks/D01_modify_environment starting +debug: Running on codethink04-arm64. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Nov 22 19:39 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/108290/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/108290/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='arm64' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' - DISTRIBUTION='forky' - HOME='/root' - HOST_ARCH='arm64' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="3" [2]="3" [3]="1" [4]="release" [5]="aarch64-unknown-linux-gnu") + BASH_VERSION='5.3.3(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=arm64 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 nocheck' + DIRSTACK=() + DISTRIBUTION=forky + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=aarch64 + HOST_ARCH=arm64 IFS=' ' - INVOCATION_ID='83cf8b2ebb9f47f4bd1d7e29282fc688' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='1048199' - PS1='# ' - PS2='> ' + INVOCATION_ID=4f70780cce73499999cabac5f830d30f + LANG=C + LANGUAGE=nl_BE:nl + LC_ALL=C + MACHTYPE=aarch64-unknown-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=108290 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.19kAXyQl/pbuilderrc_bOXS --distribution forky --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/forky-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.19kAXyQl/b1 --logfile b1/build.log ruby-regexp-parser_2.6.1-1.dsc' - SUDO_GID='109' - SUDO_HOME='/var/lib/jenkins' - SUDO_UID='104' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://192.168.101.4:3128' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.19kAXyQl/pbuilderrc_89me --distribution forky --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/forky-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.19kAXyQl/b2 --logfile b2/build.log ruby-regexp-parser_2.6.1-1.dsc' + SUDO_GID=109 + SUDO_HOME=/var/lib/jenkins + SUDO_UID=104 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://192.168.101.4:3128 I: uname -a - Linux codethink03-arm64 6.12.57+deb13-cloud-arm64 #1 SMP Debian 6.12.57-1 (2025-11-05) aarch64 GNU/Linux + Linux i-capture-the-hostname 6.12.57+deb13-cloud-arm64 #1 SMP Debian 6.12.57-1 (2025-11-05) aarch64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Aug 10 2025 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/1048199/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Aug 10 12:30 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/108290/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -180,7 +212,7 @@ Get: 62 http://deb.debian.org/debian forky/main arm64 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB] Get: 63 http://deb.debian.org/debian forky/main arm64 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 64 http://deb.debian.org/debian forky/main arm64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] -Fetched 24.0 MB in 0s (93.5 MB/s) +Fetched 24.0 MB in 0s (144 MB/s) Preconfiguring packages ... Selecting previously unselected package sensible-utils. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19968 files and directories currently installed.) @@ -458,7 +490,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/ruby-regexp-parser-2.6.1/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../ruby-regexp-parser_2.6.1-1_source.changes +I: user script /srv/workspace/pbuilder/108290/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for forky +I: user script /srv/workspace/pbuilder/108290/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ruby-regexp-parser-2.6.1/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../ruby-regexp-parser_2.6.1-1_source.changes dpkg-buildpackage: info: source package ruby-regexp-parser dpkg-buildpackage: info: source version 2.6.1-1 dpkg-buildpackage: info: source distribution unstable @@ -485,8 +521,7 @@ rake ragel:rb ragel -F1 -R /build/reproducible-path/ruby-regexp-parser-2.6.1/tasks/../lib/regexp_parser/scanner/scanner.rl -o /build/reproducible-path/ruby-regexp-parser-2.6.1/tasks/../lib/regexp_parser/scanner.rb make[1]: Leaving directory '/build/reproducible-path/ruby-regexp-parser-2.6.1' - dh_auto_test -O--buildsystem=ruby - dh_ruby --test +dh: command-omitted: The call to "dh_auto_test -O--buildsystem=ruby" was omitted due to "DEB_BUILD_OPTIONS=nocheck" create-stamp debian/debhelper-build-stamp dh_testroot -O--buildsystem=ruby dh_prep -O--buildsystem=ruby @@ -497,7 +532,7 @@ │ ruby-regexp-parser: Installing files and building extensions for ruby3.3 │ └──────────────────────────────────────────────────────────────────────────────┘ -/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20261226-1058648-of0sz9/gemspec +/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20251122-128529-4b3wwa/gemspec WARNING: You have specified the uri: https://github.com/ammar/regexp_parser for all of the following keys: @@ -509,7 +544,7 @@ Name: regexp_parser Version: 2.6.1 File: regexp_parser-2.6.1.gem -/usr/bin/ruby3.3 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-regexp-parser/usr/share/rubygems-integration/all /tmp/d20261226-1058648-of0sz9/regexp_parser-2.6.1.gem +/usr/bin/ruby3.3 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-regexp-parser/usr/share/rubygems-integration/all /tmp/d20251122-128529-4b3wwa/regexp_parser-2.6.1.gem /build/reproducible-path/ruby-regexp-parser-2.6.1/debian/ruby-regexp-parser/usr/share/rubygems-integration/all/gems/regexp_parser-2.6.1/lib/regexp_parser.rb /build/reproducible-path/ruby-regexp-parser-2.6.1/debian/ruby-regexp-parser/usr/share/rubygems-integration/all/gems/regexp_parser-2.6.1/lib/regexp_parser/error.rb /build/reproducible-path/ruby-regexp-parser-2.6.1/debian/ruby-regexp-parser/usr/share/rubygems-integration/all/gems/regexp_parser-2.6.1/lib/regexp_parser/expression.rb @@ -602,2703 +637,7 @@ cd - cd - dh_installchangelogs -pruby-regexp-parser /build/reproducible-path/ruby-regexp-parser-2.6.1/CHANGELOG.md upstream -/usr/bin/ruby3.3 /usr/bin/gem2deb-test-runner - -┌──────────────────────────────────────────────────────────────────────────────┐ -│ Checking Rubygems dependency resolution on ruby3.3 │ -└──────────────────────────────────────────────────────────────────────────────┘ - -RUBYLIB=. GEM_PATH=/build/reproducible-path/ruby-regexp-parser-2.6.1/debian/ruby-regexp-parser/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-regexp-parser-2.6.1/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.3.0:/var/lib/gems/3.3.0:/usr/local/lib/ruby/gems/3.3.0:/usr/lib/ruby/gems/3.3.0:/usr/lib/aarch64-linux-gnu/ruby/gems/3.3.0:/usr/share/rubygems-integration/3.3.0:/usr/share/rubygems-integration/all:/usr/lib/aarch64-linux-gnu/rubygems-integration/3.3.0 ruby3.3 -e gem\ \"regexp_parser\" - -┌──────────────────────────────────────────────────────────────────────────────┐ -│ Run tests for ruby3.3 from debian/ruby-tests.rake │ -└──────────────────────────────────────────────────────────────────────────────┘ - -RUBYLIB=. GEM_PATH=/build/reproducible-path/ruby-regexp-parser-2.6.1/debian/ruby-regexp-parser/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-regexp-parser-2.6.1/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.3.0:/var/lib/gems/3.3.0:/usr/local/lib/ruby/gems/3.3.0:/usr/lib/ruby/gems/3.3.0:/usr/lib/aarch64-linux-gnu/ruby/gems/3.3.0:/usr/share/rubygems-integration/3.3.0:/usr/share/rubygems-integration/all:/usr/lib/aarch64-linux-gnu/rubygems-integration/3.3.0 ruby3.3 -S rake --rakelibdir /gem2deb-nonexistent -f debian/ruby-tests.rake -/usr/bin/ruby3.3 -I/usr/share/rubygems-integration/all/gems/rspec-support-3.13.1/lib:/usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/lib /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation - -Regexp::Expression::Base - #to_re warns when used on set members - updating #quantifier updates #repetitions - given the pattern (?-mix:^a(b(c(d)))e$) - parses expression at [0] as Expression - parses expression at [1] as Expression - parses expression at [2] as Expression - parses expression at [2, 0] as Expression - parses expression at [2, 1] as Expression - parses expression at [2, 1, 0] as Expression - parses expression at [2, 1, 1] as Expression - parses expression at [2, 1, 1, 0] as Expression - parses expression at [3] as Expression - parses expression at [4] as Expression - given the pattern (?-mix:^a([b]+)c$) - parses expression at [] as Regexp::Expression::Root - parses expression at [0] as Expression - parses expression at [1] as Expression - parses expression at [2] as Expression - parses expression at [2, 0] as Expression - parses expression at [2, 0, 0] as Expression - parses expression at [3] as Expression - parses expression at [4] as Expression - given the pattern (?-mix:^(ab|cd)$) - parses expression at [] as Regexp::Expression::Root - parses expression at [0] as bol - parses expression at [1] as capture - parses expression at [1, 0] as alternation - parses expression at [1, 0, 0] as sequence - parses expression at [1, 0, 0, 0] as literal - parses expression at [1, 0, 1] as sequence - parses expression at [1, 0, 1, 0] as literal - parses expression at [2] as eol - given the pattern (?-mix:^a*(b+(c?))$) - parses expression at [] as Regexp::Expression::Root - parses expression at [0] as Expression - parses expression at [1] as Expression - parses expression at [2] as Expression - parses expression at [2, 0] as Expression - parses expression at [2, 1] as Expression - parses expression at [2, 1, 0] as Expression - parses expression at [3] as Expression - given the pattern (?-mix:aa) - parses expression at [0] as Expression - given the pattern (?-mix:a?) - parses expression at [0] as Expression - given the pattern (?-mix:a*) - parses expression at [0] as Expression - given the pattern (?-mix:a+) - parses expression at [0] as Expression - given the pattern (?-mix:aa) - parses expression at [0] as Expression - given the pattern (?-mix:a?) - parses expression at [0] as Expression - given the pattern (?-mix:a*) - parses expression at [0] as Expression - given the pattern (?-mix:a+) - parses expression at [0] as Expression - given the pattern (?-mix:a?) - parses expression at [0] as Expression - given the pattern (?-mix:a*) - parses expression at [0] as Expression - given the pattern (?-mix:a{,5}) - parses expression at [0] as Expression - given the pattern (?-mix:a{0,5}) - parses expression at [0] as Expression - given the pattern (?-mix:a) - parses expression at [0] as Expression - given the pattern (?-mix:a+) - parses expression at [0] as Expression - given the pattern (?-mix:a{1}) - parses expression at [0] as Expression - given the pattern (?-mix:a{1,5}) - parses expression at [0] as Expression - given the pattern (?-mix:(aa)) - parses expression at [0] as Expression - given the pattern (?-mix:(aa)) - parses expression at [0] as Expression - given the pattern (?-mix:(aa){42}) - parses expression at [0] as Expression - given the pattern (?-mix:(aa){42}) - parses expression at [0] as Expression - given the pattern ^a*(b([cde]+))+f?$ - parses expression at [] as Regexp::Expression::Root - -Expression::Base#clone - Base#clone - Subexpression#clone - Group::Named#clone - Group::Options#clone - Backreference::Base#clone - Sequence#clone - Base#unquantified_clone - produces a clone - does not carry over the callee quantifier - keeps quantifiers of callee children - -Regexp::Expression::Conditional - Conditional#condition, #branches - Condition#referenced_expression - parse conditional excessive branches - -Regexp::Expression::FreeSpace - white space quantify raises error - comment quantify raises error - -Regexp::Expression::Shared - ::construct - works for Regexp::Expression::Alternation - works for Regexp::Expression::Alternative - works for Regexp::Expression::Anchor::Base - works for Regexp::Expression::Anchor::EndOfLine - works for Regexp::Expression::Assertion::Base - works for Regexp::Expression::Assertion::Lookahead - works for Regexp::Expression::Backreference::Base - works for Regexp::Expression::Backreference::Number - works for Regexp::Expression::CharacterSet - works for Regexp::Expression::CharacterSet::IntersectedSequence - works for Regexp::Expression::CharacterSet::Intersection - works for Regexp::Expression::CharacterSet::Range - works for Regexp::Expression::CharacterType::Any - works for Regexp::Expression::CharacterType::Base - works for Regexp::Expression::CharacterType::Digit - works for Regexp::Expression::Conditional::Branch - works for Regexp::Expression::Conditional::Condition - works for Regexp::Expression::Conditional::Expression - works for Regexp::Expression::EscapeSequence::Base - works for Regexp::Expression::EscapeSequence::Literal - works for Regexp::Expression::FreeSpace - works for Regexp::Expression::Group::Base - works for Regexp::Expression::Group::Capture - works for Regexp::Expression::Keep::Mark - works for Regexp::Expression::Literal - works for Regexp::Expression::PosixClass - works for Regexp::Expression::Quantifier - works for Regexp::Expression::Root - works for Regexp::Expression::UnicodeProperty::Base - works for Regexp::Expression::UnicodeProperty::Number::Decimal - allows overriding defaults - allows passing options - raises ArgumentError for unknown parameters - -Regexp::Expression::Shared#human_name - given the pattern (?-mix:) - parses expression at [] as Expression - given the pattern (?-mix:a) - parses expression at [0] as Expression - given the pattern (?-mix:.) - parses expression at [0] as Expression - given the pattern (?-mix:[abc]) - parses expression at [0] as Expression - given the pattern (?-mix:[a-c]) - parses expression at [0, 0] as Expression - given the pattern (?-mix:\d) - parses expression at [0] as Expression - given the pattern (?-mix:\n) - parses expression at [0] as Expression - given the pattern (?-mix:\u{61 62 63}) - parses expression at [0] as Expression - given the pattern (?-mix:\p{ascii}) - parses expression at [0] as Expression - given the pattern (?-mix:[[:ascii:]]) - parses expression at [0, 0] as Expression - given the pattern (?-mix:a{5}) - parses expression at [0] as Expression - given the pattern (?-mix:^) - parses expression at [0] as Expression - given the pattern (?-mix:(?=abc)) - parses expression at [0] as Expression - given the pattern (?-mix:(a)(b)) - parses expression at [0] as Expression - given the pattern (?-mix:(a)(b)) - parses expression at [1] as Expression - given the pattern (?-mix:(?abc)) - parses expression at [0] as Expression - given the pattern (?x-mi: ) - parses expression at [0] as Expression - given the pattern (?x-mi:#comment - ) - parses expression at [0] as Expression - given the pattern (?x-mi:(?#comment)) - parses expression at [0] as Expression - given the pattern (?-mix:(abc)\1) - parses expression at [1] as Expression - given the pattern (?-mix:(?)\k) - parses expression at [1] as Expression - given the pattern (?-mix:(abc)\g<-1>) - parses expression at [1] as Expression - given the pattern (?-mix:a|bc) - parses expression at [0] as Expression - given the pattern (?-mix:a|bc) - parses expression at [0, 0] as Expression - -Regexp::MatchLength - literal - literal sequence - dot - set - type - escape - property - codepoint list - multi-char literal - fixed quantified - range quantified - nested quantified - open-end quantified - empty subexpression - anchor - lookaround - free space - comment - backreference - subexp call - alternation - nested alternation - quantified alternation - absence group - raises for missing references - ::of - works with Regexps - works with Strings - works with Expressions - Expression::Base#match_length - returns the MatchLength - Expression::Base#inner_match_length - returns the MatchLength of an expression that does not count towards parent match_length - #include? - unquantified - fixed quantified - variably quantified - nested quantified - branches - called on leaf node - #fixed? - unquantified - fixed quantified - variably quantified - equal branches - unequal branches - equal quantified branches - unequal quantified branches - empty - #each - returns an Enumerator if called without a block - is aware of limit option even if called without a block - is limited to 1000 iterations in case there are infinite match lengths - scaffolds the Enumerable interface - #endless_each - returns an Enumerator if called without a block - never stops iterating for infinite match lengths - #inspect - is nice - -Expression::Base#match - returns the #match result of the respective Regexp - can be given an offset, just like Regexp#match - works with the #=~ alias - -Expression::Base#match? - returns true if the Respective Regexp matches - returns false if the Respective Regexp does not match - -Expression::Base#strfregexp - #strfre alias - #strfregexp level - #strfregexp start end - #strfregexp length - #strfregexp coded offset - #strfregexp type token - #strfregexp quantifier - #strfregexp text - #strfregexp combined - #strfregexp conditional - #strfregexp_tree - #strfregexp_tree separator - #strfregexp_tree excluding self - -ExpressionTests - #type? - #is? - #one_of? - #== - -Subexpression#traverse - Subexpression#traverse - Subexpression#traverse including self - Subexpression#traverse without a block - Subexpression#walk alias - Subexpression#each_expression - Subexpression#each_expression including self - Subexpression#each_expression indices - Subexpression#each_expression indices including self - Subexpression#each_expression without a block - Subexpression#flat_map without block - Subexpression#flat_map without block including self - Subexpression#flat_map indices - Subexpression#flat_map indices including self - Subexpression#flat_map expressions - Subexpression#flat_map expressions including self - -Expression::Base#options - returns a hash of options/flags that affect the expression - includes options that are locally enabled via special groups - excludes locally disabled options - gives correct precedence to negative options - correctly handles multiple negative option parts - gives correct precedence when encountering multiple encoding flags - is accessible via shortcuts - given the pattern (?i-mx:) - parses expression at [] as root - given the pattern (?i-mx:a) - parses expression at [0] as literal - given the pattern (?i-mx:\A) - parses expression at [0] as bos - given the pattern (?i-mx:\d) - parses expression at [0] as digit - given the pattern (?i-mx:\n) - parses expression at [0] as newline - given the pattern (?i-mx:\K) - parses expression at [0] as mark - given the pattern (?i-mx:.) - parses expression at [0] as dot - given the pattern (?i-mx:(a)) - parses expression at [0] as capture - given the pattern (?i-mx:(a)) - parses expression at [0, 0] as literal - given the pattern (?i-mx:(?=a)) - parses expression at [0] as lookahead - given the pattern (?i-mx:(?=a)) - parses expression at [0, 0] as literal - given the pattern (?i-mx:(a|b)) - parses expression at [0] as capture - given the pattern (?i-mx:(a|b)) - parses expression at [0, 0] as alternation - given the pattern (?i-mx:(a|b)) - parses expression at [0, 0, 0] as sequence - given the pattern (?i-mx:(a|b)) - parses expression at [0, 0, 0, 0] as literal - given the pattern (?i-mx:(a)\1) - parses expression at [1] as number - given the pattern (?i-mx:(a)\k<1>) - parses expression at [1] as number_ref - given the pattern (?i-mx:(a)\g<1>) - parses expression at [1] as number_call - given the pattern (?i-mx:[a]) - parses expression at [0] as character - given the pattern (?i-mx:[a]) - parses expression at [0, 0] as literal - given the pattern (?i-mx:[a-z]) - parses expression at [0, 0] as range - given the pattern (?i-mx:[a-z]) - parses expression at [0, 0, 0] as literal - given the pattern (?i-mx:[a&&z]) - parses expression at [0, 0] as intersection - given the pattern (?i-mx:[a&&z]) - parses expression at [0, 0, 0, 0] as literal - given the pattern (?i-mx:[[:ascii:]]) - parses expression at [0, 0] as ascii - given the pattern (?i-mx:\p{word}) - parses expression at [0] as word - given the pattern (?i-mx:(a)(?(1)b|c)) - parses expression at [1] as open - given the pattern (?i-mx:(a)(?(1)b|c)) - parses expression at [1, 0] as condition - given the pattern (?i-mx:(a)(?(1)b|c)) - parses expression at [1, 1] as sequence - given the pattern (?i-mx:(a)(?(1)b|c)) - parses expression at [1, 1, 0] as literal - -Expression::Base#parts - given the pattern (?-mix:) - parses expression at [] as root - given the pattern (?-mix:a) - parses expression at [0] as literal - given the pattern (?-mix:\K) - parses expression at [0] as mark - given the pattern (?-mix:\p{any}) - parses expression at [0] as any - given the pattern (?-mix:[a]) - parses expression at [0] as character - given the pattern (?-mix:[^a]) - parses expression at [0] as character - given the pattern (?-mix:(a)) - parses expression at [0] as capture - given the pattern (?-mix:(?>a)) - parses expression at [0] as atomic - given the pattern (?-mix:(?=a)) - parses expression at [0] as lookahead - given the pattern (?-mix:(?#a)) - parses expression at [0] as comment - given the pattern (?-mix:(a(b(c)))) - parses expression at [0] as capture - given the pattern (?-mix:a|b|c) - parses expression at [] as root - parses expression at [0] as alternation - given the pattern (?-mix:[a-z]) - parses expression at [] as root - parses expression at [0] as character - parses expression at [0, 0] as range - given the pattern (?-mix:[a&&b&&c]) - parses expression at [] as root - parses expression at [0, 0] as intersection - given the pattern (?-mix:(a)(?(1)T|F)) - parses expression at [1] as Regexp::Expression::Conditional::Expression - -Regexp::Expression::Subexpression - #dig - given the pattern (?-mix:abcd|ghij|klmn|pqur) - parses expression at [0] as Regexp::Expression::Alternation - parses expression at [0, 0] as Regexp::Expression::Alternative - parses expression at [0, 1] as Regexp::Expression::Alternative - parses expression at [0, 2] as Regexp::Expression::Alternative - parses expression at [0, 3] as Regexp::Expression::Alternative - given the pattern (?-mix:a(b(\d|[ef-g[h]]))) - parses expression at [0] as Regexp::Expression::Literal - parses expression at [1, 0] as Regexp::Expression::Literal - parses expression at [1, 1, 0] as Regexp::Expression::Alternation - parses expression at [1, 1, 0, 0] as Regexp::Expression::Alternative - parses expression at [1, 1, 0, 0, 0] as Regexp::Expression::CharacterType::Digit - parses expression at [1, 1, 0, 1] as Regexp::Expression::Alternative - parses expression at [1, 1, 0, 1, 0] as Regexp::Expression::CharacterSet - parses expression at [1, 1, 0, 1, 0, 0] as Regexp::Expression::Literal - parses expression at [1, 1, 0, 1, 0, 1] as Regexp::Expression::CharacterSet::Range - parses expression at [1, 1, 0, 1, 0, 1, 0] as Regexp::Expression::Literal - parses expression at [1, 1, 0, 1, 0, 2, 0] as Regexp::Expression::Literal - -Expression::Base#to_h - Conditional#to_h - given the pattern (?-mix:abc) - parses expression at [] as Regexp::Expression::Root - given the pattern (?-mix:a{2,4}) - parses expression at [0] as Regexp::Expression::Quantifier - -Expression::Base#to_s - literal alternation - quantified alternations - quantified sets - property sets - groups - assertions - comments - options - url - multiline source - multiline #to_s - multiline equivalence - chained quantifiers #to_s - non-ascii comment - -Regexp::Lexer - lexer returns an array - lexer returns tokens - lexer token count - lexer scan alias - -Conditional lexing - given the pattern (?-mix:(?a)(?()b|c)) - lexes token 3 as open conditional at 0, 0, 0 - lexes token 4 as condition conditional at 0, 0, 1 - lexes token 6 as separator conditional at 0, 0, 1 - lexes token 8 as close conditional at 0, 0, 0 - given the pattern (?-mix:((?a)(?(?()b|((?()[e-g]|[h-j])))))) - lexes token 0 as capture group at 0, 0, 0 - lexes token 1 as named group at 1, 0, 0 - lexes token 5 as open conditional at 2, 0, 0 - lexes token 6 as condition conditional at 2, 0, 1 - lexes token 8 as separator conditional at 2, 0, 1 - lexes token 10 as open conditional at 3, 0, 1 - lexes token 11 as condition conditional at 3, 0, 2 - lexes token 12 as open set at 3, 0, 2 - lexes token 13 as literal literal at 3, 1, 2 - lexes token 14 as range set at 3, 1, 2 - lexes token 15 as literal literal at 3, 1, 2 - lexes token 16 as close set at 3, 0, 2 - lexes token 17 as separator conditional at 3, 0, 2 - lexes token 23 as close conditional at 3, 0, 1 - lexes token 25 as close conditional at 2, 0, 0 - lexes token 26 as close group at 1, 0, 0 - lexes token 27 as close group at 0, 0, 0 - given the pattern (?-mix:(a(b(c)))(?(1)(?(2)(?(3)d|e))|(?(3)(?(2)f|g)|(?(1)f|g)))) - lexes token 9 as open conditional at 0, 0, 0 - lexes token 10 as condition conditional at 0, 0, 1 - lexes token 11 as open conditional at 0, 0, 1 - lexes token 12 as condition conditional at 0, 0, 2 - lexes token 13 as open conditional at 0, 0, 2 - lexes token 14 as condition conditional at 0, 0, 3 - lexes token 16 as separator conditional at 0, 0, 3 - lexes token 18 as close conditional at 0, 0, 2 - lexes token 19 as close conditional at 0, 0, 1 - lexes token 20 as separator conditional at 0, 0, 1 - lexes token 21 as open conditional at 0, 0, 1 - lexes token 22 as condition conditional at 0, 0, 2 - lexes token 23 as open conditional at 0, 0, 2 - lexes token 24 as condition conditional at 0, 0, 3 - lexes token 26 as separator conditional at 0, 0, 3 - lexes token 28 as close conditional at 0, 0, 2 - lexes token 29 as separator conditional at 0, 0, 2 - lexes token 30 as open conditional at 0, 0, 2 - lexes token 31 as condition conditional at 0, 0, 3 - lexes token 33 as separator conditional at 0, 0, 3 - lexes token 35 as close conditional at 0, 0, 2 - lexes token 36 as close conditional at 0, 0, 1 - lexes token 37 as close conditional at 0, 0, 0 - -Literal delimiter lexing - given the pattern } - lexes token 0 as literal literal at 0, 0, 0 - given the pattern }} - lexes token 0 as literal literal at 0, 0, 0 - given the pattern { - lexes token 0 as literal literal at 0, 0, 0 - given the pattern {{ - lexes token 0 as literal literal at 0, 0, 0 - given the pattern {} - lexes token 0 as literal literal at 0, 0, 0 - given the pattern }{ - lexes token 0 as literal literal at 0, 0, 0 - given the pattern }{+ - lexes token 0 as literal literal at 0, 0, 0 - lexes token 1 as literal literal at 0, 0, 0 - lexes token 2 as one_or_more quantifier at 0, 0, 0 - given the pattern {{var}} - lexes token 0 as literal literal at 0, 0, 0 - given the pattern a{b}c - lexes token 0 as literal literal at 0, 0, 0 - given the pattern a{1,2 - lexes token 0 as literal literal at 0, 0, 0 - given the pattern ({.+}) - lexes token 0 as capture group at 0, 0, 0 - lexes token 1 as literal literal at 1, 0, 0 - lexes token 2 as dot meta at 1, 0, 0 - lexes token 3 as one_or_more quantifier at 1, 0, 0 - lexes token 4 as literal literal at 1, 0, 0 - lexes token 5 as close group at 0, 0, 0 - given the pattern ] - lexes token 0 as literal literal at 0, 0, 0 - given the pattern ]] - lexes token 0 as literal literal at 0, 0, 0 - given the pattern ]\[ - lexes token 0 as literal literal at 0, 0, 0 - lexes token 1 as set_open escape at 0, 0, 0 - given the pattern () - lexes token 0 as capture group at 0, 0, 0 - lexes token 1 as close group at 0, 0, 0 - given the pattern {abc:.+}}}[^}]]} - lexes token 0 as literal literal at 0, 0, 0 - lexes token 1 as dot meta at 0, 0, 0 - lexes token 2 as one_or_more quantifier at 0, 0, 0 - lexes token 3 as literal literal at 0, 0, 0 - lexes token 4 as open set at 0, 0, 0 - lexes token 5 as negate set at 0, 1, 0 - lexes token 6 as literal literal at 0, 1, 0 - lexes token 7 as close set at 0, 0, 0 - lexes token 8 as literal literal at 0, 0, 0 - -Escape lexing - given the pattern \u{62} - lexes token 0 as codepoint_list escape at 0, 0, 0 - given the pattern \u{62 63 64} - lexes token 0 as codepoint_list escape at 0, 0, 0 - given the pattern \u{62 63 64}+ - lexes token 0 as codepoint_list escape at 0, 0, 0 - lexes token 1 as codepoint_list escape at 0, 0, 0 - lexes token 2 as one_or_more quantifier at 0, 0, 0 - -Keep lexing - given the pattern (?-mix:ab\Kcd) - lexes token 1 as mark keep at 0, 0, 0 - given the pattern (?-mix:(a\Kb)|(c\\\Kd)ef) - lexes token 2 as mark keep at 1, 0, 0 - lexes token 9 as mark keep at 1, 0, 0 - -Literal lexing - lex single 2 byte char - lex single 3 byte char - lex single 4 byte char - given the pattern a - lexes token 0 as literal literal at 0, 0, 0 - given the pattern ab+ - lexes token 0 as literal literal at 0, 0, 0 - lexes token 1 as literal literal at 0, 0, 0 - lexes token 2 as one_or_more quantifier at 0, 0, 0 - given the pattern äöü+ - lexes token 0 as literal literal at 0, 0, 0 - lexes token 1 as literal literal at 0, 0, 0 - lexes token 2 as one_or_more quantifier at 0, 0, 0 - given the pattern ab?れます+cd - lexes token 0 as literal literal at 0, 0, 0 - lexes token 1 as literal literal at 0, 0, 0 - lexes token 2 as zero_or_one quantifier at 0, 0, 0 - lexes token 3 as literal literal at 0, 0, 0 - lexes token 4 as literal literal at 0, 0, 0 - lexes token 5 as one_or_more quantifier at 0, 0, 0 - lexes token 6 as literal literal at 0, 0, 0 - given the pattern 𐒀𐒁?𐒂ab+𐒃 - lexes token 0 as literal literal at 0, 0, 0 - lexes token 1 as literal literal at 0, 0, 0 - lexes token 2 as zero_or_one quantifier at 0, 0, 0 - lexes token 3 as literal literal at 0, 0, 0 - lexes token 4 as literal literal at 0, 0, 0 - lexes token 5 as one_or_more quantifier at 0, 0, 0 - lexes token 6 as literal literal at 0, 0, 0 - given the pattern mu𝄞?si*𝄫c+ - lexes token 0 as literal literal at 0, 0, 0 - lexes token 1 as literal literal at 0, 0, 0 - lexes token 2 as zero_or_one quantifier at 0, 0, 0 - lexes token 3 as literal literal at 0, 0, 0 - lexes token 4 as literal literal at 0, 0, 0 - lexes token 5 as zero_or_more quantifier at 0, 0, 0 - lexes token 6 as literal literal at 0, 0, 0 - lexes token 7 as literal literal at 0, 0, 0 - lexes token 8 as one_or_more quantifier at 0, 0, 0 - -Nesting lexing - given the pattern (?-mix:(((b)))) - lexes token 0 as capture group at 0, 0, 0 - lexes token 1 as capture group at 1, 0, 0 - lexes token 2 as capture group at 2, 0, 0 - lexes token 3 as literal literal at 3, 0, 0 - lexes token 4 as close group at 2, 0, 0 - lexes token 5 as close group at 1, 0, 0 - lexes token 6 as close group at 0, 0, 0 - given the pattern (?-mix:(\((b)\))) - lexes token 0 as capture group at 0, 0, 0 - lexes token 1 as group_open escape at 1, 0, 0 - lexes token 2 as capture group at 1, 0, 0 - lexes token 3 as literal literal at 2, 0, 0 - lexes token 4 as close group at 1, 0, 0 - lexes token 5 as group_close escape at 1, 0, 0 - lexes token 6 as close group at 0, 0, 0 - given the pattern (?-mix:(?>a(?>b(?>c)))) - lexes token 0 as atomic group at 0, 0, 0 - lexes token 2 as atomic group at 1, 0, 0 - lexes token 4 as atomic group at 2, 0, 0 - lexes token 6 as close group at 2, 0, 0 - lexes token 7 as close group at 1, 0, 0 - lexes token 8 as close group at 0, 0, 0 - given the pattern (?-mix:a(?:b(?:c))) - lexes token 0 as passive group at 0, 0, 0 - lexes token 2 as passive group at 1, 0, 0 - lexes token 4 as passive group at 2, 0, 0 - lexes token 6 as close group at 2, 0, 0 - lexes token 7 as close group at 1, 0, 0 - lexes token 8 as close group at 0, 0, 0 - given the pattern (?-mix:(?=a(?!b(?<=c(?abc)\k - lexes token 3 as name_ref backref at 0, 0, 0 - given the pattern (?abc)\k'X' - lexes token 3 as name_ref backref at 0, 0, 0 - given the pattern (abc)\k<1> - lexes token 3 as number_ref backref at 0, 0, 0 - given the pattern (abc)\k'1' - lexes token 3 as number_ref backref at 0, 0, 0 - given the pattern (abc)\k<-1> - lexes token 3 as number_rel_ref backref at 0, 0, 0 - given the pattern (abc)\k'-1' - lexes token 3 as number_rel_ref backref at 0, 0, 0 - given the pattern (?abc)\g - lexes token 3 as name_call backref at 0, 0, 0 - given the pattern (?abc)\g'X' - lexes token 3 as name_call backref at 0, 0, 0 - given the pattern (abc)\g<1> - lexes token 3 as number_call backref at 0, 0, 0 - given the pattern (abc)\g'1' - lexes token 3 as number_call backref at 0, 0, 0 - given the pattern \g<0> - lexes token 0 as number_call backref at 0, 0, 0 - given the pattern \g'0' - lexes token 0 as number_call backref at 0, 0, 0 - given the pattern (abc)\g<-1> - lexes token 3 as number_rel_call backref at 0, 0, 0 - given the pattern (abc)\g'-1' - lexes token 3 as number_rel_call backref at 0, 0, 0 - given the pattern (abc)\g<+1> - lexes token 3 as number_rel_call backref at 0, 0, 0 - given the pattern (abc)\g'+1' - lexes token 3 as number_rel_call backref at 0, 0, 0 - given the pattern (?abc)\k - lexes token 3 as name_recursion_ref backref at 0, 0, 0 - given the pattern (?abc)\k'X-0' - lexes token 3 as name_recursion_ref backref at 0, 0, 0 - given the pattern (abc)\k<1-0> - lexes token 3 as number_recursion_ref backref at 0, 0, 0 - given the pattern (abc)\k'1-0' - lexes token 3 as number_recursion_ref backref at 0, 0, 0 - -Regexp::Parser - parse returns a root expression - parse can be called with block - parse root contains expressions - parse root options mi - parse no quantifier target raises error - parse sequence no quantifier target raises error - -Alternation parsing - given the pattern (?-mix:a|b) - parses expression at [0] as Regexp::Expression::Alternation - parses expression at [0, 0] as Regexp::Expression::Alternative - parses expression at [0, 0, 0] as literal - parses expression at [0, 1] as Regexp::Expression::Alternative - parses expression at [0, 1, 0] as literal - given the pattern (?-mix:a|(b)c) - parses expression at [0] as Regexp::Expression::Alternation - parses expression at [0, 0] as Regexp::Expression::Alternative - parses expression at [0, 0, 0] as literal - parses expression at [0, 1] as Regexp::Expression::Alternative - parses expression at [0, 1, 0] as capture - parses expression at [0, 1, 1] as literal - given the pattern (?-mix:(ab??|cd*|ef+)*|(gh|ij|kl)?) - parses expression at [0] as Regexp::Expression::Alternation - parses expression at [0, 0] as Regexp::Expression::Alternative - parses expression at [0, 0, 0] as capture - parses expression at [0, 0, 0, 0] as Regexp::Expression::Alternation - parses expression at [0, 0, 0, 0, 0] as Regexp::Expression::Alternative - parses expression at [0, 0, 0, 0, 0, 0] as literal - parses expression at [0, 0, 0, 0, 0, 1] as literal - parses expression at [0, 1] as Regexp::Expression::Alternative - parses expression at [0, 1, 0] as capture - -Anchor parsing - given the pattern (?-mix:^a) - parses expression at [0] as Regexp::Expression::Anchor::BeginningOfLine - given the pattern (?-mix:a$) - parses expression at [1] as Regexp::Expression::Anchor::EndOfLine - given the pattern (?-mix:\Aa) - parses expression at [0] as Regexp::Expression::Anchor::BeginningOfString - given the pattern (?-mix:a\z) - parses expression at [1] as Regexp::Expression::Anchor::EndOfString - given the pattern (?-mix:a\Z) - parses expression at [1] as Regexp::Expression::Anchor::EndOfStringOrBeforeEndOfLine - given the pattern (?-mix:a\b) - parses expression at [1] as Regexp::Expression::Anchor::WordBoundary - given the pattern (?-mix:a\B) - parses expression at [1] as Regexp::Expression::Anchor::NonWordBoundary - given the pattern (?-mix:a\G) - parses expression at [1] as Regexp::Expression::Anchor::MatchStart - given the pattern (?-mix:\\A) - parses expression at [0] as Regexp::Expression::EscapeSequence::Literal - -Conditional parsing - given the pattern (?-mix:(?a)(?()T|F)) - parses expression at [1] as Regexp::Expression::Conditional::Expression - parses expression at [1, 0] as Regexp::Expression::Conditional::Condition - parses expression at [1, 1] as Regexp::Expression::Conditional::Branch - parses expression at [1, 1, 0] as literal - parses expression at [1, 2] as Regexp::Expression::Conditional::Branch - parses expression at [1, 2, 0] as literal - given the pattern (?-mix:(a)(?(1)T|F)) - parses expression at [1] as Regexp::Expression::Conditional::Expression - parses expression at [1, 0] as Regexp::Expression::Conditional::Condition - parses expression at [1, 1] as Regexp::Expression::Conditional::Branch - parses expression at [1, 1, 0] as literal - parses expression at [1, 2] as Regexp::Expression::Conditional::Branch - parses expression at [1, 2, 0] as literal - given the pattern (?-mix:(foo)(?(1)\d+|(\w)){42}) - parses expression at [1] as Regexp::Expression::Conditional::Expression - parses expression at [1, 0] as Regexp::Expression::Conditional::Condition - parses expression at [1, 1] as Regexp::Expression::Conditional::Branch - parses expression at [1, 1, 0] as digit - parses expression at [1, 2] as Regexp::Expression::Conditional::Branch - given the pattern ((a)|(b)|((?(2)(c(d|e)+)?|(?(3)f|(?(4)(g|(h)(i))))))) - parses expression at [0] as Regexp::Expression::Group::Capture - parses expression at [0, 0] as Regexp::Expression::Alternation - parses expression at [0, 0, 2] as Regexp::Expression::Alternative - parses expression at [0, 0, 2, 0] as Regexp::Expression::Group::Capture - parses expression at [0, 0, 2, 0, 0] as Regexp::Expression::Conditional::Expression - parses expression at [0, 0, 2, 0, 0, 0] as Regexp::Expression::Conditional::Condition - parses expression at [0, 0, 2, 0, 0, 1] as Regexp::Expression::Conditional::Branch - parses expression at [0, 0, 2, 0, 0, 2] as Regexp::Expression::Conditional::Branch - parses expression at [0, 0, 2, 0, 0, 2, 0] as Regexp::Expression::Conditional::Expression - parses expression at [0, 0, 2, 0, 0, 2, 0, 0] as Regexp::Expression::Conditional::Condition - parses expression at [0, 0, 2, 0, 0, 2, 0, 1] as Regexp::Expression::Conditional::Branch - parses expression at [0, 0, 2, 0, 0, 2, 0, 1, 0] as Regexp::Expression::Literal - given the pattern (?-mix:(?a)(?()T|)) - parses expression at [1] as Regexp::Expression::Conditional::Expression - parses expression at [1, 2] as Regexp::Expression::Conditional::Branch - -Parsing errors - raises UnknownTokenTypeError for unknown token types - raises for unkown tokens of type anchor - raises for unkown tokens of type backref - raises for unkown tokens of type conditional - raises for unkown tokens of type free_space - raises for unkown tokens of type group - raises for unkown tokens of type meta - raises for unkown tokens of type nonproperty - raises for unkown tokens of type property - raises for unkown tokens of type quantifier - raises for unkown tokens of type set - raises for unkown tokens of type type - -EscapeSequence parsing - codepoint_list #char and #codepoint raise errors - given the pattern (?-mix:a\ac) - parses expression at [1] as Regexp::Expression::EscapeSequence::Bell - given the pattern (?-mix:a\ec) - parses expression at [1] as Regexp::Expression::EscapeSequence::AsciiEscape - given the pattern (?-mix:a\fc) - parses expression at [1] as Regexp::Expression::EscapeSequence::FormFeed - given the pattern (?-mix:a\nc) - parses expression at [1] as Regexp::Expression::EscapeSequence::Newline - given the pattern (?-mix:a\rc) - parses expression at [1] as Regexp::Expression::EscapeSequence::Return - given the pattern (?-mix:a\tc) - parses expression at [1] as Regexp::Expression::EscapeSequence::Tab - given the pattern (?-mix:a\vc) - parses expression at [1] as Regexp::Expression::EscapeSequence::VerticalTab - given the pattern (?-mix:a\.c) - parses expression at [1] as Regexp::Expression::EscapeSequence::Literal - given the pattern (?-mix:a\?c) - parses expression at [1] as Regexp::Expression::EscapeSequence::Literal - given the pattern (?-mix:a\*c) - parses expression at [1] as Regexp::Expression::EscapeSequence::Literal - given the pattern (?-mix:a\+c) - parses expression at [1] as Regexp::Expression::EscapeSequence::Literal - given the pattern (?-mix:a\|c) - parses expression at [1] as Regexp::Expression::EscapeSequence::Literal - given the pattern (?-mix:a\(c) - parses expression at [1] as Regexp::Expression::EscapeSequence::Literal - given the pattern (?-mix:a\)c) - parses expression at [1] as Regexp::Expression::EscapeSequence::Literal - given the pattern (?-mix:a\{c) - parses expression at [1] as Regexp::Expression::EscapeSequence::Literal - given the pattern (?-mix:a\}c) - parses expression at [1] as Regexp::Expression::EscapeSequence::Literal - given the pattern (?-mix:a\u0640) - parses expression at [1] as Regexp::Expression::EscapeSequence::Codepoint - given the pattern (?-mix:a\u{41 1F60D}) - parses expression at [1] as Regexp::Expression::EscapeSequence::CodepointList - given the pattern (?-mix:a\u{10FFFF}) - parses expression at [1] as Regexp::Expression::EscapeSequence::CodepointList - given the pattern (?-mix:a\xFF) - parses expression at [1] as Regexp::Expression::EscapeSequence::Hex - given the pattern (?-mix:a\177) - parses expression at [1] as Regexp::Expression::EscapeSequence::Octal - given the pattern (?-mix:\n) - parses expression at [0] as Expression - given the pattern (?-mix:\?) - parses expression at [0] as Expression - given the pattern (?-mix:\101) - parses expression at [0] as Expression - given the pattern (?-mix:\x42) - parses expression at [0] as Expression - given the pattern (?-mix:\u0043) - parses expression at [0] as Expression - given the pattern (?-mix:\u{44 45}) - parses expression at [0] as Expression - given the pattern (?-mix:\\\c2b) - parses expression at [1] as Regexp::Expression::EscapeSequence::Control - given the pattern (?-mix:\d\C-C\w) - parses expression at [1] as Regexp::Expression::EscapeSequence::Control - given the pattern (?-mix:\Z\M-Z) - parses expression at [1] as Regexp::Expression::EscapeSequence::Meta - given the pattern (?-mix:\A\M-\C-X) - parses expression at [1] as Regexp::Expression::EscapeSequence::MetaControl - given the pattern (?-mix:\A\M-\cX) - parses expression at [1] as Regexp::Expression::EscapeSequence::MetaControl - given the pattern (?-mix:\A\C-\M-X) - parses expression at [1] as Regexp::Expression::EscapeSequence::MetaControl - given the pattern (?-mix:\A\c\M-X) - parses expression at [1] as Regexp::Expression::EscapeSequence::MetaControl - -FreeSpace parsing - given the pattern (?-mix:a b c) - parses expression at [0] as Regexp::Expression::Literal - given the pattern (?x-mi:a b c) - parses expression at [0] as Regexp::Expression::Literal - parses expression at [1] as Regexp::Expression::WhiteSpace - parses expression at [2] as Regexp::Expression::Literal - parses expression at [3] as Regexp::Expression::WhiteSpace - parses expression at [4] as Regexp::Expression::Literal - given the pattern (?x-mi:a * b + c) - parses expression at [0] as Regexp::Expression::Literal - parses expression at [1] as Regexp::Expression::WhiteSpace - parses expression at [2] as Regexp::Expression::Literal - parses expression at [3] as Regexp::Expression::WhiteSpace - parses expression at [4] as Regexp::Expression::Literal - given the pattern (?x-mi: - a ? # One letter - b {2,5} # Another one - [c-g] + # A set - (h|i|j) # A group - ) - parses expression at [1] as Regexp::Expression::Literal - parses expression at [2] as Regexp::Expression::WhiteSpace - parses expression at [3] as Regexp::Expression::Comment - parses expression at [7] as Regexp::Expression::Comment - parses expression at [11] as Regexp::Expression::Comment - parses expression at [15] as Regexp::Expression::Comment - given the pattern (?x-mi: - a - # comment 1 - ? - ( - b # comment 2 - # comment 3 - + - ) - # comment 4 - * - ) - parses expression at [1] as Regexp::Expression::Literal - parses expression at [5] as Regexp::Expression::Group::Capture - parses expression at [5, 1] as Regexp::Expression::Literal - parses expression at [5, 3] as Regexp::Expression::Comment - -Group parsing - parse group number - parse group number at level - parse invalid option switch quantification - given the pattern (?-mix:(?=abc)(?!def)) - parses expression at [0] as Regexp::Expression::Assertion::Lookahead - parses expression at [1] as Regexp::Expression::Assertion::NegativeLookahead - given the pattern (?-mix:(?<=abc)(?abc)\k) - parses expression at [1] as Regexp::Expression::Backreference::Name - given the pattern (?-mix:(?abc)\k'X') - parses expression at [1] as Regexp::Expression::Backreference::Name - given the pattern (?-mix:(abc)\k<1>) - parses expression at [1] as Regexp::Expression::Backreference::Number - given the pattern (?-mix:(abc)\k<-1>) - parses expression at [1] as Regexp::Expression::Backreference::NumberRelative - given the pattern (?-mix:(abc)\k'-1') - parses expression at [1] as Regexp::Expression::Backreference::NumberRelative - given the pattern (?-mix:(?abc)\g) - parses expression at [1] as Regexp::Expression::Backreference::NameCall - given the pattern (?-mix:(abc)\g<1>) - parses expression at [1] as Regexp::Expression::Backreference::NumberCall - given the pattern \g<0> - parses expression at [0] as Regexp::Expression::Backreference::NumberCall - given the pattern (?-mix:(abc)\g<-1>) - parses expression at [1] as Regexp::Expression::Backreference::NumberCallRelative - given the pattern (?-mix:\g<+1>(abc)) - parses expression at [0] as Regexp::Expression::Backreference::NumberCallRelative - given the pattern (?-mix:(?abc)\k) - parses expression at [1] as Regexp::Expression::Backreference::NameRecursionLevel - given the pattern (?-mix:(abc)\k<1-0>) - parses expression at [1] as Regexp::Expression::Backreference::NumberRecursionLevel - given the pattern (?-mix:(abc)\k<1-0>) - parses expression at [1] as Regexp::Expression::Backreference::NumberRecursionLevel - given the pattern (?-mix:(abc)\k<-1+0>) - parses expression at [1] as Regexp::Expression::Backreference::NumberRecursionLevel - given the pattern (?-mix:(abc)\k<1+1>) - parses expression at [1] as Regexp::Expression::Backreference::NumberRecursionLevel - given the pattern (?-mix:(abc)\k<1-1>) - parses expression at [1] as Regexp::Expression::Backreference::NumberRecursionLevel - given the pattern (abc)(def)\k<-1>(ghi)\k<-3>\k<-1> - parses expression at [2] as number_rel_ref - parses expression at [4] as number_rel_ref - parses expression at [5] as number_rel_ref - given the pattern \g<+1>(abc)\g<+2>(def)(ghi)\g<-2> - parses expression at [0] as number_rel_call - parses expression at [2] as number_rel_call - parses expression at [5] as number_rel_call - -CharacterSet::Intersection parsing - intersections behavior remains unchanged - given the pattern (?-mix:[a&&z]) - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::CharacterSet::Intersection - parses expression at [0, 0, 0] as Regexp::Expression::CharacterSet::IntersectedSequence - parses expression at [0, 0, 0, 0] as literal - parses expression at [0, 0, 1] as Regexp::Expression::CharacterSet::IntersectedSequence - parses expression at [0, 0, 1, 0] as literal - given the pattern (?-mix:[a-z&&[^a]]) - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::CharacterSet::Intersection - parses expression at [0, 0, 0] as Regexp::Expression::CharacterSet::IntersectedSequence - parses expression at [0, 0, 0, 0] as Regexp::Expression::CharacterSet::Range - parses expression at [0, 0, 1] as Regexp::Expression::CharacterSet::IntersectedSequence - parses expression at [0, 0, 1, 0] as Regexp::Expression::CharacterSet - given the pattern (?-mix:[a&&a-z]) - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::CharacterSet::Intersection - parses expression at [0, 0, 0] as Regexp::Expression::CharacterSet::IntersectedSequence - parses expression at [0, 0, 0, 0] as literal - parses expression at [0, 0, 1] as Regexp::Expression::CharacterSet::IntersectedSequence - parses expression at [0, 0, 1, 0] as Regexp::Expression::CharacterSet::Range - given the pattern (?-mix:[a&&\w]) - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::CharacterSet::Intersection - parses expression at [0, 0, 1] as Regexp::Expression::CharacterSet::IntersectedSequence - parses expression at [0, 0, 1, 0] as word - given the pattern (?-mix:[\h&&\w&&efg]) - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::CharacterSet::Intersection - parses expression at [0, 0, 0] as Regexp::Expression::CharacterSet::IntersectedSequence - parses expression at [0, 0, 0, 0] as hex - parses expression at [0, 0, 1] as Regexp::Expression::CharacterSet::IntersectedSequence - parses expression at [0, 0, 1, 0] as word - parses expression at [0, 0, 2] as Regexp::Expression::CharacterSet::IntersectedSequence - parses expression at [0, 0, 2, 0] as literal - parses expression at [0, 0, 2, 1] as literal - parses expression at [0, 0, 2, 2] as literal - -CharacterSet::Range parsing - ranges behavior remains unchanged - given the pattern [a-z] - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::CharacterSet::Range - parses expression at [0, 0, 0] as literal - parses expression at [0, 0, 1] as literal - given the pattern [\x00-\x22] - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::CharacterSet::Range - parses expression at [0, 0, 0] as hex - parses expression at [0, 0, 1] as hex - given the pattern [\u{40 42}-\u1234] - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::CharacterSet::Range - parses expression at [0, 0, 0] as codepoint_list - parses expression at [0, 0, 1] as codepoint - given the pattern [--z] - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::CharacterSet::Range - parses expression at [0, 0, 0] as literal - parses expression at [0, 0, 1] as literal - given the pattern [!--] - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::CharacterSet::Range - parses expression at [0, 0, 0] as literal - parses expression at [0, 0, 1] as literal - given the pattern [!-^] - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::CharacterSet::Range - parses expression at [0, 0, 0] as literal - parses expression at [0, 0, 1] as literal - given the pattern [^-z] - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as literal - parses expression at [0, 1] as literal - given the pattern [[\-ab]&&-bc] - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::CharacterSet::Intersection - parses expression at [0, 0, 0] as Regexp::Expression::CharacterSet::IntersectedSequence - parses expression at [0, 0, 0, 0] as Regexp::Expression::CharacterSet - parses expression at [0, 0, 1] as Regexp::Expression::CharacterSet::IntersectedSequence - parses expression at [0, 0, 1, 0] as literal - given the pattern [bc-&&[\-ab]] - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::CharacterSet::Intersection - parses expression at [0, 0, 0] as Regexp::Expression::CharacterSet::IntersectedSequence - parses expression at [0, 0, 0, 2] as literal - parses expression at [0, 0, 1] as Regexp::Expression::CharacterSet::IntersectedSequence - parses expression at [0, 0, 1, 0] as Regexp::Expression::CharacterSet - -CharacterSet parsing - given the pattern (?-mix:[ab]+) - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::Literal - parses expression at [0, 1] as Regexp::Expression::Literal - given the pattern (?-mix:[a\dc]) - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 1] as Regexp::Expression::CharacterType::Digit - given the pattern (?-mix:[a\bc]) - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 1] as Regexp::Expression::EscapeSequence::Backspace - given the pattern [a\x20c] - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 1] as Regexp::Expression::EscapeSequence::Hex - given the pattern [a\u0640c] - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 1] as Regexp::Expression::EscapeSequence::Codepoint - given the pattern [a\u{41 1F60D}c] - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 1] as Regexp::Expression::EscapeSequence::CodepointList - given the pattern [[:digit:][:^lower:]]+ - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::PosixClass - parses expression at [0, 1] as Regexp::Expression::PosixClass - given the pattern [a[b[c]d]e] - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::Literal - parses expression at [0, 1] as Regexp::Expression::CharacterSet - parses expression at [0, 2] as Regexp::Expression::Literal - parses expression at [0, 1, 1] as Regexp::Expression::CharacterSet - parses expression at [0, 1, 1, 0] as Regexp::Expression::Literal - given the pattern [a[^b[c]]] - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::Literal - parses expression at [0, 1] as Regexp::Expression::CharacterSet - parses expression at [0, 1, 0] as Regexp::Expression::Literal - parses expression at [0, 1, 1] as Regexp::Expression::CharacterSet - parses expression at [0, 1, 1, 0] as Regexp::Expression::Literal - given the pattern [aaa] - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::Literal - parses expression at [0, 1] as Regexp::Expression::Literal - parses expression at [0, 2] as Regexp::Expression::Literal - given the pattern [ ] - parses expression at [0] as Regexp::Expression::CharacterSet - parses expression at [0, 0] as Regexp::Expression::Literal - parses expression at [0, 1] as Regexp::Expression::Literal - parses expression at [0, 2] as Regexp::Expression::Literal - given the pattern (?x)[ ] - parses expression at [1] as Regexp::Expression::CharacterSet - parses expression at [1, 0] as Regexp::Expression::Literal - parses expression at [1, 1] as Regexp::Expression::Literal - parses expression at [1, 2] as Regexp::Expression::Literal - given the pattern [[.span-ll.]] - parses expression at [0, 0] as Regexp::Expression::CharacterSet - parses expression at [0, 0, 0] as Regexp::Expression::Literal - given the pattern [[=e=]] - parses expression at [0, 0] as Regexp::Expression::CharacterSet - parses expression at [0, 0, 0] as Regexp::Expression::Literal - -CharacterType parsing - given the pattern (?-mix:a\dc) - parses expression at [1] as Regexp::Expression::CharacterType::Digit - given the pattern (?-mix:a\Dc) - parses expression at [1] as Regexp::Expression::CharacterType::NonDigit - given the pattern (?-mix:a\sc) - parses expression at [1] as Regexp::Expression::CharacterType::Space - given the pattern (?-mix:a\Sc) - parses expression at [1] as Regexp::Expression::CharacterType::NonSpace - given the pattern (?-mix:a\hc) - parses expression at [1] as Regexp::Expression::CharacterType::Hex - given the pattern (?-mix:a\Hc) - parses expression at [1] as Regexp::Expression::CharacterType::NonHex - given the pattern (?-mix:a\wc) - parses expression at [1] as Regexp::Expression::CharacterType::Word - given the pattern (?-mix:a\Wc) - parses expression at [1] as Regexp::Expression::CharacterType::NonWord - given the pattern a\Rc - parses expression at [1] as Regexp::Expression::CharacterType::Linebreak - given the pattern a\Xc - parses expression at [1] as Regexp::Expression::CharacterType::ExtendedGrapheme - -Regexp::Scanner - scanner returns an array - scanner returns tokens as arrays - scanner token count - -Anchor scanning - given the pattern ^abc - scans token 0 as bol anchor at 0..1 - given the pattern abc$ - scans token 1 as eol anchor at 3..4 - given the pattern \Aabc - scans token 0 as bos anchor at 0..2 - given the pattern abc\z - scans token 1 as eos anchor at 3..5 - given the pattern abc\Z - scans token 1 as eos_ob_eol anchor at 3..5 - given the pattern a\bc - scans token 1 as word_boundary anchor at 1..3 - given the pattern a\Bc - scans token 1 as nonword_boundary anchor at 1..3 - given the pattern a\Gc - scans token 1 as match_start anchor at 1..3 - given the pattern \\Ac - scans token 0 as backslash escape at 0..2 - given the pattern a\\z - scans token 1 as backslash escape at 1..3 - given the pattern a\\Z - scans token 1 as backslash escape at 1..3 - given the pattern a\\bc - scans token 1 as backslash escape at 1..3 - given the pattern a\\Bc - scans token 1 as backslash escape at 1..3 - -Conditional scanning - given the pattern (?-mix:(a)(?(1)T|F)1) - scans token 3 as open conditional at 3..5 - given the pattern (?-mix:(a)(?(1)T|F)2) - scans token 4 as condition_open conditional at 5..6 - given the pattern (?-mix:(a)(?(1)T|F)3) - scans token 5 as condition conditional at 6..7 - given the pattern (?-mix:(a)(?(1)T|F)4) - scans token 6 as condition_close conditional at 7..8 - given the pattern (?-mix:(a)(?(1)T|F)5) - scans token 7 as literal literal at 8..9 - given the pattern (?-mix:(a)(?(1)T|F)6) - scans token 8 as separator conditional at 9..10 - given the pattern (?-mix:(a)(?(1)T|F)7) - scans token 9 as literal literal at 10..11 - given the pattern (?-mix:(a)(?(1)T|F)8) - scans token 10 as close conditional at 11..12 - given the pattern (?-mix:(a)(?(1)TRUE)9) - scans token 8 as close conditional at 12..13 - given the pattern (?-mix:(a)(?(1)TRUE|)10) - scans token 8 as separator conditional at 12..13 - given the pattern (?-mix:(a)(?(1)TRUE|)11) - scans token 9 as close conditional at 13..14 - given the pattern (?-mix:(?A)(?()T|F)1) - scans token 5 as condition conditional at 10..13 - given the pattern (?-mix:(?'N'A)(?('N')T|F)2) - scans token 5 as condition conditional at 10..13 - given the pattern (?-mix:(a(b(c)))(?(1)(?(2)d|(?(3)e|f))|(?(2)(?(1)g|h)))) - scans token 0 as capture group at 0..1 - scans token 1 as literal literal at 1..2 - scans token 2 as capture group at 2..3 - scans token 3 as literal literal at 3..4 - scans token 4 as capture group at 4..5 - scans token 5 as literal literal at 5..6 - scans token 6 as close group at 6..7 - scans token 7 as close group at 7..8 - scans token 8 as close group at 8..9 - scans token 9 as open conditional at 9..11 - scans token 10 as condition_open conditional at 11..12 - scans token 11 as condition conditional at 12..13 - scans token 12 as condition_close conditional at 13..14 - scans token 13 as open conditional at 14..16 - scans token 14 as condition_open conditional at 16..17 - scans token 15 as condition conditional at 17..18 - scans token 16 as condition_close conditional at 18..19 - scans token 17 as literal literal at 19..20 - scans token 18 as separator conditional at 20..21 - scans token 19 as open conditional at 21..23 - scans token 20 as condition_open conditional at 23..24 - scans token 21 as condition conditional at 24..25 - scans token 22 as condition_close conditional at 25..26 - scans token 23 as literal literal at 26..27 - scans token 24 as separator conditional at 27..28 - scans token 25 as literal literal at 28..29 - scans token 26 as close conditional at 29..30 - scans token 27 as close conditional at 30..31 - scans token 28 as separator conditional at 31..32 - scans token 29 as open conditional at 32..34 - scans token 30 as condition_open conditional at 34..35 - scans token 31 as condition conditional at 35..36 - scans token 32 as condition_close conditional at 36..37 - scans token 33 as open conditional at 37..39 - scans token 34 as condition_open conditional at 39..40 - scans token 35 as condition conditional at 40..41 - scans token 36 as condition_close conditional at 41..42 - scans token 37 as literal literal at 42..43 - scans token 38 as separator conditional at 43..44 - scans token 39 as literal literal at 44..45 - scans token 40 as close conditional at 45..46 - scans token 41 as close conditional at 46..47 - scans token 42 as close conditional at 47..48 - given the pattern (?-mix:((a)|(b)|((?(2)(c(d|e)+)?|(?(3)f|(?(4)(g|(h)(i)))))))) - scans token 0 as capture group at 0..1 - scans token 1 as capture group at 1..2 - scans token 2 as literal literal at 2..3 - scans token 3 as close group at 3..4 - scans token 4 as alternation meta at 4..5 - scans token 5 as capture group at 5..6 - scans token 6 as literal literal at 6..7 - scans token 7 as close group at 7..8 - scans token 8 as alternation meta at 8..9 - scans token 9 as capture group at 9..10 - scans token 10 as open conditional at 10..12 - scans token 11 as condition_open conditional at 12..13 - scans token 12 as condition conditional at 13..14 - scans token 13 as condition_close conditional at 14..15 - scans token 14 as capture group at 15..16 - scans token 15 as literal literal at 16..17 - scans token 16 as capture group at 17..18 - scans token 17 as literal literal at 18..19 - scans token 18 as alternation meta at 19..20 - scans token 19 as literal literal at 20..21 - scans token 20 as close group at 21..22 - scans token 21 as one_or_more quantifier at 22..23 - scans token 22 as close group at 23..24 - scans token 23 as zero_or_one quantifier at 24..25 - scans token 24 as separator conditional at 25..26 - scans token 25 as open conditional at 26..28 - scans token 26 as condition_open conditional at 28..29 - scans token 27 as condition conditional at 29..30 - scans token 28 as condition_close conditional at 30..31 - scans token 29 as literal literal at 31..32 - scans token 30 as separator conditional at 32..33 - scans token 31 as open conditional at 33..35 - scans token 32 as condition_open conditional at 35..36 - scans token 33 as condition conditional at 36..37 - scans token 34 as condition_close conditional at 37..38 - scans token 35 as capture group at 38..39 - scans token 36 as literal literal at 39..40 - scans token 37 as alternation meta at 40..41 - scans token 38 as capture group at 41..42 - scans token 39 as literal literal at 42..43 - scans token 40 as close group at 43..44 - scans token 41 as capture group at 44..45 - scans token 42 as literal literal at 45..46 - scans token 43 as close group at 46..47 - scans token 44 as close group at 47..48 - scans token 45 as close conditional at 48..49 - scans token 46 as close conditional at 49..50 - scans token 47 as close conditional at 50..51 - scans token 48 as close group at 51..52 - scans token 49 as close group at 52..53 - given the pattern (?-mix:(a)(?(1)(b|c|d)|(e|f|g))(h)(?(2)(i|j|k)|(l|m|n))|o|p) - scans token 9 as alternation meta at 10..11 - scans token 11 as alternation meta at 12..13 - scans token 14 as separator conditional at 15..16 - scans token 17 as alternation meta at 18..19 - scans token 19 as alternation meta at 20..21 - scans token 32 as alternation meta at 34..35 - scans token 34 as alternation meta at 36..37 - scans token 37 as separator conditional at 39..40 - scans token 40 as alternation meta at 42..43 - scans token 42 as alternation meta at 44..45 - scans token 46 as alternation meta at 48..49 - scans token 48 as alternation meta at 50..51 - -Literal delimiter scanning - given the pattern } - scans token 0 as literal literal at 0..1 - given the pattern }} - scans token 0 as literal literal at 0..2 - given the pattern { - scans token 0 as literal literal at 0..1 - given the pattern {{ - scans token 0 as literal literal at 0..2 - given the pattern {} - scans token 0 as literal literal at 0..2 - given the pattern }{ - scans token 0 as literal literal at 0..2 - given the pattern }{+ - scans token 0 as literal literal at 0..2 - given the pattern {{var}} - scans token 0 as literal literal at 0..7 - given the pattern a{1,2 - scans token 0 as literal literal at 0..5 - given the pattern ({.+}) - scans token 0 as capture group at 0..1 - scans token 1 as literal literal at 1..2 - scans token 2 as dot meta at 2..3 - scans token 3 as one_or_more quantifier at 3..4 - scans token 4 as literal literal at 4..5 - scans token 5 as close group at 5..6 - given the pattern ] - scans token 0 as literal literal at 0..1 - given the pattern ]] - scans token 0 as literal literal at 0..2 - given the pattern ]\[ - scans token 0 as literal literal at 0..1 - scans token 1 as set_open escape at 1..3 - given the pattern () - scans token 0 as capture group at 0..1 - scans token 1 as close group at 1..2 - -Regexp::Scanner - raises Regexp::Scanner::PrematureEndError for unbalanced set `[a` - raises Regexp::Scanner::PrematureEndError for unbalanced set `[[:alpha:]` - raises Regexp::Scanner::PrematureEndError for unbalanced group `(abc` - raises Regexp::Scanner::PrematureEndError for eof in property `\p{asci` - raises Regexp::Scanner::PrematureEndError for incomplete property `\p{ascii abc` - raises Regexp::Scanner::PrematureEndError for eof options `(?mix` - raises Regexp::Scanner::PrematureEndError for eof escape `\` - raises Regexp::Scanner::PrematureEndError for eof in hex escape `\x` - raises Regexp::Scanner::PrematureEndError for eof in cp escape `\u` - raises Regexp::Scanner::PrematureEndError for eof in cp escape `\u0` - raises Regexp::Scanner::PrematureEndError for eof in cp escape `\u00` - raises Regexp::Scanner::PrematureEndError for eof in cp escape `\u000` - raises Regexp::Scanner::PrematureEndError for eof in cp escape `\u{` - raises Regexp::Scanner::PrematureEndError for eof in cp escape `\u{00` - raises Regexp::Scanner::PrematureEndError for eof in cp escape `\u{0000` - raises Regexp::Scanner::PrematureEndError for eof in cp escape `\u{0000 ` - raises Regexp::Scanner::PrematureEndError for eof in cp escape `\u{0000 0000` - raises Regexp::Scanner::PrematureEndError for eof in c-seq `\c` - raises Regexp::Scanner::PrematureEndError for eof in c-seq `\c\M` - raises Regexp::Scanner::PrematureEndError for eof in c-seq `\c\M-` - raises Regexp::Scanner::PrematureEndError for eof in c-seq `\C` - raises Regexp::Scanner::PrematureEndError for eof in c-seq `\C-` - raises Regexp::Scanner::PrematureEndError for eof in c-seq `\C-\M` - raises Regexp::Scanner::PrematureEndError for eof in c-seq `\C-\M-` - raises Regexp::Scanner::PrematureEndError for eof in m-seq `\M` - raises Regexp::Scanner::PrematureEndError for eof in m-seq `\M-` - raises Regexp::Scanner::PrematureEndError for eof in m-seq `\M-\` - raises Regexp::Scanner::PrematureEndError for eof in m-seq `\M-\c` - raises Regexp::Scanner::PrematureEndError for eof in m-seq `\M-\C` - raises Regexp::Scanner::PrematureEndError for eof in m-seq `\M-\C-` - raises Regexp::Scanner::InvalidSequenceError for invalid hex `\xZ` - raises Regexp::Scanner::InvalidSequenceError for invalid hex `\xZ0` - raises Regexp::Scanner::InvalidSequenceError for invalid c-seq `\cü` - raises Regexp::Scanner::InvalidSequenceError for invalid c-seq `\c\M-ü` - raises Regexp::Scanner::InvalidSequenceError for invalid c-seq `\C-ü` - raises Regexp::Scanner::InvalidSequenceError for invalid c-seq `\C-\M-ü` - raises Regexp::Scanner::InvalidSequenceError for invalid m-seq `\M-ü` - raises Regexp::Scanner::InvalidSequenceError for invalid m-seq `\M-\cü` - raises Regexp::Scanner::InvalidSequenceError for invalid m-seq `\M-\C-ü` - raises Regexp::Scanner::ScannerError for invalid c-seq `\Ca` - raises Regexp::Scanner::ScannerError for invalid m-seq `\Ma` - raises Regexp::Scanner::InvalidGroupError for invalid group `(?'')` - raises Regexp::Scanner::InvalidGroupError for invalid group `(?''empty-name)` - raises Regexp::Scanner::InvalidGroupError for invalid group `(?<>)` - raises Regexp::Scanner::InvalidGroupError for invalid group `(?<>empty-name)` - raises Regexp::Scanner::InvalidGroupOption for invalid option `(?foo)` - raises Regexp::Scanner::InvalidGroupOption for invalid option `(?mix abc)` - raises Regexp::Scanner::InvalidGroupOption for invalid option `(?mix^bc` - raises Regexp::Scanner::InvalidGroupOption for invalid option `(?)` - raises Regexp::Scanner::InvalidGroupOption for invalid neg option `(?-foo)` - raises Regexp::Scanner::InvalidGroupOption for invalid neg option `(?-u)` - raises Regexp::Scanner::InvalidGroupOption for invalid neg option `(?-mixu)` - raises Regexp::Scanner::InvalidBackrefError for empty backref `\k<>` - raises Regexp::Scanner::InvalidBackrefError for empty backref `\k''` - raises Regexp::Scanner::InvalidBackrefError for empty refcall `\g<>` - raises Regexp::Scanner::InvalidBackrefError for empty refcall `\g''` - raises Regexp::Scanner::UnknownUnicodePropertyError for unknown property `\p{foobar}` - raises Regexp::Scanner::UnknownPosixClassError for unknown POSIX class [::] `[[::]]` - raises Regexp::Scanner::UnknownPosixClassError for unknown POSIX class [:^:] `[[:^:]]` - raises Regexp::Scanner::UnknownPosixClassError for unknown POSIX class [:x:] `[[:x:]]` - raises Regexp::Scanner::UnknownPosixClassError for unknown POSIX class `[[:^x:]]` - raises Regexp::Scanner::UnknownPosixClassError for unknown POSIX class `[[:WORD:]]` - -Escape scanning - given the pattern (?-mix:c\at) - scans token 1 as bell escape at 1..3 - given the pattern (?-mix:c\bt) - scans token 1 as word_boundary anchor at 1..3 - given the pattern (?-mix:c\ft) - scans token 1 as form_feed escape at 1..3 - given the pattern (?-mix:c\nt) - scans token 1 as newline escape at 1..3 - given the pattern (?-mix:c\tt) - scans token 1 as tab escape at 1..3 - given the pattern (?-mix:c\vt) - scans token 1 as vertical_tab escape at 1..3 - given the pattern c\qt - scans token 1 as literal escape at 1..3 - given the pattern a\üc - scans token 1 as literal escape at 1..3 - given the pattern a\😋c - scans token 1 as literal escape at 1..3 - given the pattern c\gt - scans token 1 as literal escape at 1..3 - given the pattern c\kt - scans token 1 as literal escape at 1..3 - given the pattern a\012c - scans token 1 as octal escape at 1..5 - given the pattern a\0124 - scans token 1 as octal escape at 1..5 - given the pattern \712+7 - scans token 0 as octal escape at 0..4 - given the pattern a\xA - scans token 1 as hex escape at 1..4 - given the pattern a\x24c - scans token 1 as hex escape at 1..5 - given the pattern a\x0640c - scans token 1 as hex escape at 1..5 - given the pattern a\u0640c - scans token 1 as codepoint escape at 1..7 - given the pattern a\u{640 0641}c - scans token 1 as codepoint_list escape at 1..13 - given the pattern a\u{10FFFF}c - scans token 1 as codepoint_list escape at 1..11 - given the pattern ab\\xcd - scans token 1 as backslash escape at 2..4 - given the pattern ab\\0cd - scans token 1 as backslash escape at 2..4 - given the pattern ab\\Kcd - scans token 1 as backslash escape at 2..4 - given the pattern ab\^cd - scans token 1 as bol escape at 2..4 - given the pattern ab\$cd - scans token 1 as eol escape at 2..4 - given the pattern ab\[cd - scans token 1 as set_open escape at 2..4 - given the pattern a\cBc - scans token 1 as control escape at 1..4 - given the pattern a\c^c - scans token 1 as control escape at 1..4 - given the pattern a\c\n - scans token 1 as control escape at 1..5 - given the pattern a\c\\b - scans token 1 as control escape at 1..5 - given the pattern a\C-bc - scans token 1 as control escape at 1..5 - given the pattern a\C-^b - scans token 1 as control escape at 1..5 - given the pattern a\C-\nb - scans token 1 as control escape at 1..6 - given the pattern a\C-\\b - scans token 1 as control escape at 1..6 - given the pattern (?-mix:a\c\M-Bc) - scans token 1 as control escape at 1..7 - given the pattern (?-mix:a\C-\M-Bc) - scans token 1 as control escape at 1..8 - given the pattern (?-mix:a\M-Bc) - scans token 1 as meta_sequence escape at 1..5 - given the pattern (?-mix:a\M-\cBc) - scans token 1 as meta_sequence escape at 1..7 - given the pattern (?-mix:a\M-\c^) - scans token 1 as meta_sequence escape at 1..7 - given the pattern (?-mix:a\M-\c\n) - scans token 1 as meta_sequence escape at 1..8 - given the pattern (?-mix:a\M-\c\\) - scans token 1 as meta_sequence escape at 1..8 - given the pattern (?-mix:a\M-\C-Bc) - scans token 1 as meta_sequence escape at 1..8 - given the pattern (?-mix:a\M-\C-\\) - scans token 1 as meta_sequence escape at 1..9 - -FreeSpace scanning - scan free space tokens - scans 0 as free space - scans 2 as free space - scans 4 as free space - scans 6 as free space - scans 8 as free space - scans 10 as free space - scans 12 as free space - scans 14 as free space - scans 16 as free space - scans 18 as free space - scans 20 as free space - scans 22 as free space - scans 24 as free space - does not scan 1 as free space - does not scan 3 as free space - does not scan 5 as free space - does not scan 7 as free space - does not scan 9 as free space - does not scan 11 as free space - does not scan 13 as free space - does not scan 15 as free space - does not scan 17 as free space - does not scan 19 as free space - does not scan 21 as free space - does not scan 23 as free space - sets the correct text - scan free space comments - given the pattern (?x-mi: - a + # A + comment - b ? # B ? comment - c {2,3} # C {2,3} comment - d + | e + # D|E comment - ) - scans token 5 as comment free_space at 11..25 - scans token 11 as comment free_space at 37..51 - scans token 17 as comment free_space at 66..84 - scans token 29 as comment free_space at 100..114 - given the pattern (?x-mi:a # b) - scans token 0 as literal literal at 0..1 - scans token 1 as whitespace free_space at 1..2 - scans token 2 as comment free_space at 2..5 - given the pattern (?x-mi:a#b) - scans token 0 as literal literal at 0..1 - scans token 1 as comment free_space at 1..3 - scan free space inlined - given the pattern (?-mix:a b(?x:c d e)f g) - scans token 0 as literal literal at 0..3 - scans token 1 as options group at 3..7 - scans token 2 as literal literal at 7..8 - scans token 3 as whitespace free_space at 8..9 - scans token 4 as literal literal at 9..10 - scans token 5 as whitespace free_space at 10..11 - scans token 6 as literal literal at 11..12 - scans token 7 as close group at 12..13 - scans token 8 as literal literal at 13..16 - scan free space nested - given the pattern (?-mix:a b(?x:c d(?-x:e f)g h)i j) - scans token 0 as literal literal at 0..3 - scans token 1 as options group at 3..7 - scans token 2 as literal literal at 7..8 - scans token 3 as whitespace free_space at 8..9 - scans token 4 as literal literal at 9..10 - scans token 5 as options group at 10..15 - scans token 6 as literal literal at 15..18 - scans token 7 as close group at 18..19 - scans token 8 as literal literal at 19..20 - scans token 9 as whitespace free_space at 20..21 - scans token 10 as literal literal at 21..22 - scans token 11 as close group at 22..23 - scans token 12 as literal literal at 23..26 - scan free space nested groups - given the pattern (?-mix:(a (b(?x: (c d) (?-x:(e f) )g) h)i j)) - scans token 0 as capture group at 0..1 - scans token 1 as literal literal at 1..3 - scans token 2 as capture group at 3..4 - scans token 3 as literal literal at 4..5 - scans token 4 as options group at 5..9 - scans token 5 as whitespace free_space at 9..10 - scans token 6 as capture group at 10..11 - scans token 7 as literal literal at 11..12 - scans token 8 as whitespace free_space at 12..13 - scans token 9 as literal literal at 13..14 - scans token 10 as close group at 14..15 - scans token 11 as whitespace free_space at 15..16 - scans token 12 as options group at 16..21 - scans token 13 as capture group at 21..22 - scans token 14 as literal literal at 22..25 - scans token 15 as close group at 25..26 - scans token 16 as literal literal at 26..27 - scans token 17 as close group at 27..28 - scans token 18 as literal literal at 28..29 - scans token 19 as close group at 29..30 - scans token 20 as literal literal at 30..32 - scans token 21 as close group at 32..33 - scans token 22 as literal literal at 33..36 - scans token 23 as close group at 36..37 - scan free space switch groups - given the pattern (?-mix:(a (b((?x) (c d) ((?-x)(e f) )g) h)i j)) - scans token 0 as capture group at 0..1 - scans token 1 as literal literal at 1..3 - scans token 2 as capture group at 3..4 - scans token 3 as literal literal at 4..5 - scans token 4 as capture group at 5..6 - scans token 5 as options_switch group at 6..9 - scans token 6 as close group at 9..10 - scans token 7 as whitespace free_space at 10..11 - scans token 8 as capture group at 11..12 - scans token 9 as literal literal at 12..13 - scans token 10 as whitespace free_space at 13..14 - scans token 11 as literal literal at 14..15 - scans token 12 as close group at 15..16 - scans token 13 as whitespace free_space at 16..17 - scans token 14 as capture group at 17..18 - scans token 15 as options_switch group at 18..22 - scans token 16 as close group at 22..23 - scans token 17 as capture group at 23..24 - scans token 18 as literal literal at 24..27 - scans token 19 as close group at 27..28 - scans token 20 as literal literal at 28..29 - scans token 21 as close group at 29..30 - scans token 22 as literal literal at 30..31 - scans token 23 as close group at 31..32 - scans token 24 as literal literal at 32..34 - scans token 25 as close group at 34..35 - scans token 26 as literal literal at 35..38 - scans token 27 as close group at 38..39 - scanning `#` in regular (non-x mode) - given the pattern (?-mix:a#bcd) - scans token 0 as literal literal at 0..5 - given the pattern (?-mix:a # bcd) - scans token 0 as literal literal at 0..7 - given the pattern (?-mix:a#\d) - scans token 0 as literal literal at 0..2 - scans token 1 as digit type at 2..4 - given the pattern (?-mix:a # \d) - scans token 0 as literal literal at 0..4 - scans token 1 as digit type at 4..6 - given the pattern (?-mix:a#()) - scans token 0 as literal literal at 0..2 - scans token 1 as capture group at 2..3 - given the pattern (?-mix:a # ()) - scans token 0 as literal literal at 0..4 - scans token 1 as capture group at 4..5 - -Group scanning - given the pattern (?>abc) - scans token 0 as atomic group at 0..3 - given the pattern (abc) - scans token 0 as capture group at 0..1 - given the pattern (?abc) - scans token 0 as named_ab group at 0..8 - given the pattern (?'name'abc) - scans token 0 as named_sq group at 0..8 - given the pattern (?abc) - scans token 0 as named_ab group at 0..10 - given the pattern (?'name_1'abc) - scans token 0 as named_sq group at 0..10 - given the pattern (?abc) - scans token 0 as named_ab group at 0..10 - given the pattern (?'name-1'abc) - scans token 0 as named_sq group at 0..10 - given the pattern (?abc) - scans token 0 as named_ab group at 0..10 - given the pattern (?'name>1'abc) - scans token 0 as named_sq group at 0..10 - given the pattern (?<üüuuüü>abc) - scans token 0 as named_ab group at 0..10 - given the pattern (?'üüuuüü'abc) - scans token 0 as named_sq group at 0..10 - given the pattern (?<😋1234😋>abc) - scans token 0 as named_ab group at 0..10 - given the pattern (?'😋1234😋'abc) - scans token 0 as named_sq group at 0..10 - given the pattern (?<)x>y) - scans token 0 as named_ab group at 0..6 - given the pattern (?')x'y) - scans token 0 as named_sq group at 0..6 - given the pattern (?'!x'y) - scans token 0 as named_sq group at 0..6 - given the pattern (?:abc) - scans token 0 as passive group at 0..3 - given the pattern (?:) - scans token 0 as passive group at 0..3 - given the pattern (?::) - scans token 0 as passive group at 0..3 - given the pattern (?#abc) - scans token 0 as comment group at 0..7 - given the pattern (?#) - scans token 0 as comment group at 0..4 - given the pattern (?=abc) - scans token 0 as lookahead assertion at 0..3 - given the pattern (?!abc) - scans token 0 as nlookahead assertion at 0..3 - given the pattern (?<=abc) - scans token 0 as lookbehind assertion at 0..4 - given the pattern (? - scans token 0 as nlookbehind assertion at 0..4 - given the pattern (?)y - scans token 0 as nlookbehind assertion at 0..4 - given the pattern (?-mix:abc) - scans token 0 as options group at 0..7 - given the pattern (?m-ix:abc) - scans token 0 as options group at 0..7 - given the pattern (?mi-x:abc) - scans token 0 as options group at 0..7 - given the pattern (?mix:abc) - scans token 0 as options group at 0..6 - given the pattern (?m:) - scans token 0 as options group at 0..4 - given the pattern (?i:) - scans token 0 as options group at 0..4 - given the pattern (?x:) - scans token 0 as options group at 0..4 - given the pattern (?mix) - scans token 0 as options_switch group at 0..5 - given the pattern (?d-mix:abc) - scans token 0 as options group at 0..8 - given the pattern (?a-mix:abc) - scans token 0 as options group at 0..8 - given the pattern (?u-mix:abc) - scans token 0 as options group at 0..8 - given the pattern (?da-m:abc) - scans token 0 as options group at 0..7 - given the pattern (?du-x:abc) - scans token 0 as options group at 0..7 - given the pattern (?dau-i:abc) - scans token 0 as options group at 0..8 - given the pattern (?dau:abc) - scans token 0 as options group at 0..6 - given the pattern (?d:) - scans token 0 as options group at 0..4 - given the pattern (?a:) - scans token 0 as options group at 0..4 - given the pattern (?u:) - scans token 0 as options group at 0..4 - given the pattern (?dau) - scans token 0 as options_switch group at 0..5 - given the pattern (?~abc) - scans token 0 as absence group at 0..3 - -Keep scanning - given the pattern (?-mix:ab\Kcd) - scans token 1 as mark keep at 2..4 - given the pattern (?-mix:(a\Kb)|(c\\\Kd)ef) - scans token 2 as mark keep at 2..4 - scans token 9 as mark keep at 11..13 - -UTF8 scanning - given the pattern a - scans token 0 as literal literal at 0..1 - given the pattern ab+ - scans token 0 as literal literal at 0..2 - scans token 1 as one_or_more quantifier at 2..3 - given the pattern äöü - scans token 0 as literal literal at 0..3 - given the pattern ab?れます+cd - scans token 0 as literal literal at 0..2 - scans token 1 as zero_or_one quantifier at 2..3 - scans token 2 as literal literal at 3..6 - scans token 3 as one_or_more quantifier at 6..7 - scans token 4 as literal literal at 7..9 - given the pattern 𐒀𐒁?𐒂ab+𐒃 - scans token 0 as literal literal at 0..2 - scans token 1 as zero_or_one quantifier at 2..3 - scans token 2 as literal literal at 3..6 - scans token 3 as one_or_more quantifier at 6..7 - scans token 4 as literal literal at 7..8 - given the pattern mu𝄞?si*𝄫c+ - scans token 0 as literal literal at 0..3 - scans token 1 as zero_or_one quantifier at 3..4 - scans token 2 as literal literal at 4..6 - scans token 3 as zero_or_more quantifier at 6..7 - scans token 4 as literal literal at 7..9 - scans token 5 as one_or_more quantifier at 9..10 - -Meta scanning - given the pattern (?-mix:abc??|def*+|ghi+) - scans token 0 as literal literal at 0..3 - scans token 1 as zero_or_one_reluctant quantifier at 3..5 - scans token 2 as alternation meta at 5..6 - scans token 3 as literal literal at 6..9 - scans token 4 as zero_or_more_possessive quantifier at 9..11 - scans token 5 as alternation meta at 11..12 - given the pattern (?-mix:(a\|b)|(c|d)\|(e[|]f)) - scans token 2 as alternation escape at 2..4 - scans token 5 as alternation meta at 6..7 - scans token 8 as alternation meta at 9..10 - scans token 11 as alternation escape at 12..14 - scans token 15 as literal literal at 17..18 - -passing options to scan - raises if if scanning from a Regexp and options are passed - sets free_spacing based on options if scanning from a String - does not set free_spacing if scanning from a String and passing no options - -Property scanning - scans \p{Alnum} as property alnum - scans \P{Alnum} as nonproperty alnum - scans \p{^Alnum} as nonproperty alnum - scans double-negated \P{^Alnum} as property alnum - scans \p{XPosixPunct} as property xposixpunct - scans \P{XPosixPunct} as nonproperty xposixpunct - scans \p{^XPosixPunct} as nonproperty xposixpunct - scans double-negated \P{^XPosixPunct} as property xposixpunct - scans \p{Newline} as property newline - scans \P{Newline} as nonproperty newline - scans \p{^Newline} as nonproperty newline - scans double-negated \P{^Newline} as property newline - scans \p{Any} as property any - scans \P{Any} as nonproperty any - scans \p{^Any} as nonproperty any - scans double-negated \P{^Any} as property any - scans \p{Assigned} as property assigned - scans \P{Assigned} as nonproperty assigned - scans \p{^Assigned} as nonproperty assigned - scans double-negated \P{^Assigned} as property assigned - scans \p{Age=1.1} as property age=1.1 - scans \P{Age=1.1} as nonproperty age=1.1 - scans \p{^Age=1.1} as nonproperty age=1.1 - scans double-negated \P{^Age=1.1} as property age=1.1 - scans \p{Age=10.0} as property age=10.0 - scans \P{Age=10.0} as nonproperty age=10.0 - scans \p{^Age=10.0} as nonproperty age=10.0 - scans double-negated \P{^Age=10.0} as property age=10.0 - scans \p{ahex} as property ascii_hex_digit - scans \P{ahex} as nonproperty ascii_hex_digit - scans \p{^ahex} as nonproperty ascii_hex_digit - scans double-negated \P{^ahex} as property ascii_hex_digit - scans \p{ASCII_Hex_Digit} as property ascii_hex_digit - scans \P{ASCII_Hex_Digit} as nonproperty ascii_hex_digit - scans \p{^ASCII_Hex_Digit} as nonproperty ascii_hex_digit - scans double-negated \P{^ASCII_Hex_Digit} as property ascii_hex_digit - scans \p{sd} as property soft_dotted - scans \P{sd} as nonproperty soft_dotted - scans \p{^sd} as nonproperty soft_dotted - scans double-negated \P{^sd} as property soft_dotted - scans \p{Soft-Dotted} as property soft_dotted - scans \P{Soft-Dotted} as nonproperty soft_dotted - scans \p{^Soft-Dotted} as nonproperty soft_dotted - scans double-negated \P{^Soft-Dotted} as property soft_dotted - scans \p{Egyp} as property egyptian_hieroglyphs - scans \P{Egyp} as nonproperty egyptian_hieroglyphs - scans \p{^Egyp} as nonproperty egyptian_hieroglyphs - scans double-negated \P{^Egyp} as property egyptian_hieroglyphs - scans \p{Egyptian Hieroglyphs} as property egyptian_hieroglyphs - scans \P{Egyptian Hieroglyphs} as nonproperty egyptian_hieroglyphs - scans \p{^Egyptian Hieroglyphs} as nonproperty egyptian_hieroglyphs - scans double-negated \P{^Egyptian Hieroglyphs} as property egyptian_hieroglyphs - scans \p{Linb} as property linear_b - scans \P{Linb} as nonproperty linear_b - scans \p{^Linb} as nonproperty linear_b - scans double-negated \P{^Linb} as property linear_b - scans \p{Linear-B} as property linear_b - scans \P{Linear-B} as nonproperty linear_b - scans \p{^Linear-B} as nonproperty linear_b - scans double-negated \P{^Linear-B} as property linear_b - scans \p{InArabic} as property in_arabic - scans \P{InArabic} as nonproperty in_arabic - scans \p{^InArabic} as nonproperty in_arabic - scans double-negated \P{^InArabic} as property in_arabic - scans \p{in Arabic} as property in_arabic - scans \P{in Arabic} as nonproperty in_arabic - scans \p{^in Arabic} as nonproperty in_arabic - scans double-negated \P{^in Arabic} as property in_arabic - scans \p{In_Arabic} as property in_arabic - scans \P{In_Arabic} as nonproperty in_arabic - scans \p{^In_Arabic} as nonproperty in_arabic - scans double-negated \P{^In_Arabic} as property in_arabic - scans \p{Yiii} as property yi - scans \P{Yiii} as nonproperty yi - scans \p{^Yiii} as nonproperty yi - scans double-negated \P{^Yiii} as property yi - scans \p{Yi} as property yi - scans \P{Yi} as nonproperty yi - scans \p{^Yi} as nonproperty yi - scans double-negated \P{^Yi} as property yi - scans \p{Zinh} as property inherited - scans \P{Zinh} as nonproperty inherited - scans \p{^Zinh} as nonproperty inherited - scans double-negated \P{^Zinh} as property inherited - scans \p{Inherited} as property inherited - scans \P{Inherited} as nonproperty inherited - scans \p{^Inherited} as nonproperty inherited - scans double-negated \P{^Inherited} as property inherited - scans \p{Qaai} as property inherited - scans \P{Qaai} as nonproperty inherited - scans \p{^Qaai} as nonproperty inherited - scans double-negated \P{^Qaai} as property inherited - scans \p{Zzzz} as property unknown - scans \P{Zzzz} as nonproperty unknown - scans \p{^Zzzz} as nonproperty unknown - scans double-negated \P{^Zzzz} as property unknown - scans \p{Unknown} as property unknown - scans \P{Unknown} as nonproperty unknown - scans \p{^Unknown} as nonproperty unknown - scans double-negated \P{^Unknown} as property unknown - -Quantifier scanning - given the pattern a? - scans token 1 as zero_or_one quantifier at 1..2 - given the pattern a?? - scans token 1 as zero_or_one_reluctant quantifier at 1..3 - given the pattern a?+ - scans token 1 as zero_or_one_possessive quantifier at 1..3 - given the pattern a* - scans token 1 as zero_or_more quantifier at 1..2 - given the pattern a*? - scans token 1 as zero_or_more_reluctant quantifier at 1..3 - given the pattern a*+ - scans token 1 as zero_or_more_possessive quantifier at 1..3 - given the pattern a+ - scans token 1 as one_or_more quantifier at 1..2 - given the pattern a+? - scans token 1 as one_or_more_reluctant quantifier at 1..3 - given the pattern a++ - scans token 1 as one_or_more_possessive quantifier at 1..3 - given the pattern a{2} - scans token 1 as interval quantifier at 1..4 - given the pattern a{2,} - scans token 1 as interval quantifier at 1..5 - given the pattern a{,2} - scans token 1 as interval quantifier at 1..5 - given the pattern a{2,4} - scans token 1 as interval quantifier at 1..6 - given the pattern a+{2}{3} - scans token 1 as one_or_more quantifier at 1..2 - given the pattern a+{2}{3} - scans token 2 as interval quantifier at 2..5 - given the pattern a+{2}{3} - scans token 3 as interval quantifier at 5..8 - -RefCall scanning - given the pattern (abc)\1 - scans token 3 as number backref at 5..7 - given the pattern (?abc)\k - scans token 3 as name_ref_ab backref at 9..14 - given the pattern (?abc)\k'X' - scans token 3 as name_ref_sq backref at 9..14 - given the pattern (?<+1>abc)\k<+1> - scans token 3 as name_ref_ab backref at 10..16 - given the pattern (?<+1>abc)\k'+1' - scans token 3 as name_ref_sq backref at 10..16 - given the pattern (abc)\k<1> - scans token 3 as number_ref_ab backref at 5..10 - given the pattern (abc)\k'1' - scans token 3 as number_ref_sq backref at 5..10 - given the pattern (abc)\k<-1> - scans token 3 as number_rel_ref_ab backref at 5..11 - given the pattern (abc)\k'-1' - scans token 3 as number_rel_ref_sq backref at 5..11 - given the pattern (?abc)\g - scans token 3 as name_call_ab backref at 9..14 - given the pattern (?abc)\g'X' - scans token 3 as name_call_sq backref at 9..14 - given the pattern (?abc)\g - scans token 3 as name_call_ab backref at 9..16 - given the pattern (?abc)\g'X-1' - scans token 3 as name_call_sq backref at 9..16 - given the pattern (abc)\g<1> - scans token 3 as number_call_ab backref at 5..10 - given the pattern (abc)\g'1' - scans token 3 as number_call_sq backref at 5..10 - given the pattern a(b|\g<0>) - scans token 4 as number_call_ab backref at 4..9 - given the pattern a(b|\g'0') - scans token 4 as number_call_sq backref at 4..9 - given the pattern (abc)\g<-1> - scans token 3 as number_rel_call_ab backref at 5..11 - given the pattern (abc)\g'-1' - scans token 3 as number_rel_call_sq backref at 5..11 - given the pattern \g<+1>(abc) - scans token 0 as number_rel_call_ab backref at 0..6 - given the pattern \g'+1'(abc) - scans token 0 as number_rel_call_sq backref at 0..6 - given the pattern (?abc)\k - scans token 3 as name_recursion_ref_ab backref at 9..16 - given the pattern (?abc)\k'X-0' - scans token 3 as name_recursion_ref_sq backref at 9..16 - given the pattern (abc)\k<1-0> - scans token 3 as number_recursion_ref_ab backref at 5..12 - given the pattern (abc)\k'1-0' - scans token 3 as number_recursion_ref_sq backref at 5..12 - given the pattern (abc)\k<+1-0> - scans token 3 as name_recursion_ref_ab backref at 5..13 - given the pattern (abc)\k'+1-0' - scans token 3 as name_recursion_ref_sq backref at 5..13 - -Set scanning - set literal encoding - given the pattern (?-mix:[a]) - scans token 0 as open set at 0..1 - given the pattern (?-mix:[b]) - scans token 2 as close set at 2..3 - given the pattern (?-mix:[^n]) - scans token 1 as negate set at 1..2 - given the pattern (?-mix:[c]) - scans token 1 as literal literal at 1..2 - given the pattern (?-mix:[^d]) - scans token 2 as literal literal at 2..3 - given the pattern (?-mix:[\b]) - scans token 1 as backspace escape at 1..3 - given the pattern (?-mix:[A\bX]) - scans token 2 as backspace escape at 2..4 - given the pattern (?-mix:[\a]) - scans token 1 as bell escape at 1..3 - given the pattern (?-mix:[\e]) - scans token 1 as escape escape at 1..3 - given the pattern (?-mix:[\f]) - scans token 1 as form_feed escape at 1..3 - given the pattern (?-mix:[\n]) - scans token 1 as newline escape at 1..3 - given the pattern (?-mix:[\r]) - scans token 1 as carriage escape at 1..3 - given the pattern (?-mix:[\t]) - scans token 1 as tab escape at 1..3 - given the pattern (?-mix:[\v]) - scans token 1 as vertical_tab escape at 1..3 - given the pattern (?-mix:[.]) - scans token 1 as literal literal at 1..2 - given the pattern (?-mix:[?]) - scans token 1 as literal literal at 1..2 - given the pattern (?-mix:[*]) - scans token 1 as literal literal at 1..2 - given the pattern (?-mix:[+]) - scans token 1 as literal literal at 1..2 - given the pattern (?-mix:[{]) - scans token 1 as literal literal at 1..2 - given the pattern (?-mix:[}]) - scans token 1 as literal literal at 1..2 - given the pattern (?-mix:[<]) - scans token 1 as literal literal at 1..2 - given the pattern (?-mix:[>]) - scans token 1 as literal literal at 1..2 - given the pattern [\\] - scans token 1 as backslash escape at 1..3 - given the pattern [\u0040] - scans token 1 as codepoint escape at 1..7 - given the pattern [\u{40}] - scans token 1 as codepoint_list escape at 1..7 - given the pattern [\c2] - scans token 1 as control escape at 1..4 - given the pattern [\C-C] - scans token 1 as control escape at 1..5 - given the pattern [\x20] - scans token 1 as hex escape at 1..5 - given the pattern [\M-Z] - scans token 1 as meta_sequence escape at 1..5 - given the pattern [\M-\C-X] - scans token 1 as meta_sequence escape at 1..8 - given the pattern [\[] - scans token 1 as set_open escape at 1..3 - given the pattern [\]] - scans token 1 as set_close escape at 1..3 - given the pattern [a\-] - scans token 2 as literal escape at 2..4 - given the pattern [\-c] - scans token 1 as literal escape at 1..3 - given the pattern [\.] - scans token 1 as literal escape at 1..3 - given the pattern [\?] - scans token 1 as literal escape at 1..3 - given the pattern [\*] - scans token 1 as literal escape at 1..3 - given the pattern [\+] - scans token 1 as literal escape at 1..3 - given the pattern [\|] - scans token 1 as literal escape at 1..3 - given the pattern [\{] - scans token 1 as literal escape at 1..3 - given the pattern [\}] - scans token 1 as literal escape at 1..3 - given the pattern [\(] - scans token 1 as literal escape at 1..3 - given the pattern [\)] - scans token 1 as literal escape at 1..3 - given the pattern [\!] - scans token 1 as literal escape at 1..3 - given the pattern [\#] - scans token 1 as literal escape at 1..3 - given the pattern [\A] - scans token 1 as literal escape at 1..3 - given the pattern [\z] - scans token 1 as literal escape at 1..3 - given the pattern [\g] - scans token 1 as literal escape at 1..3 - given the pattern [\K] - scans token 1 as literal escape at 1..3 - given the pattern [\R] - scans token 1 as literal escape at 1..3 - given the pattern [\X] - scans token 1 as literal escape at 1..3 - given the pattern [\B] - scans token 1 as literal escape at 1..3 - given the pattern (?-mix:[\d]) - scans token 1 as digit type at 1..3 - given the pattern (?-mix:[\da-z]) - scans token 1 as digit type at 1..3 - given the pattern (?-mix:[\D]) - scans token 1 as nondigit type at 1..3 - given the pattern (?-mix:[\h]) - scans token 1 as hex type at 1..3 - given the pattern (?-mix:[\H]) - scans token 1 as nonhex type at 1..3 - given the pattern (?-mix:[\s]) - scans token 1 as space type at 1..3 - given the pattern (?-mix:[\S]) - scans token 1 as nonspace type at 1..3 - given the pattern (?-mix:[\w]) - scans token 1 as word type at 1..3 - given the pattern (?-mix:[\W]) - scans token 1 as nonword type at 1..3 - given the pattern (?-mix:[a-b]) - scans token 1 as literal literal at 1..2 - given the pattern (?-mix:[a-c]) - scans token 2 as range set at 2..3 - given the pattern (?-mix:[a-d]) - scans token 3 as literal literal at 3..4 - given the pattern (?-mix:[a-b-]) - scans token 4 as literal literal at 4..5 - given the pattern (?-mix:[-a]) - scans token 1 as literal literal at 1..2 - given the pattern (?-mix:[a-c^]) - scans token 4 as literal literal at 4..5 - given the pattern (?-mix:[a-bd-f]) - scans token 2 as range set at 2..3 - given the pattern (?-mix:[a-cd-f]) - scans token 5 as range set at 5..6 - given the pattern (?-mix:[a-[c]]) - scans token 2 as range set at 2..3 - given the pattern (?-mix:[[a]-[c]]) - scans token 4 as literal literal at 4..5 - given the pattern (?-mix:[[a]-c]) - scans token 4 as literal literal at 4..5 - given the pattern (?-mix:[^-c]) - scans token 2 as literal literal at 2..3 - given the pattern (?-mix:[a[:digit:]c]) - scans token 2 as digit posixclass at 2..11 - given the pattern (?-mix:[[:digit:][:space:]]) - scans token 2 as space posixclass at 10..19 - given the pattern (?-mix:[[:^digit:]]) - scans token 1 as digit nonposixclass at 1..11 - given the pattern (?-mix:[a-d&&g-h]) - scans token 4 as intersection set at 4..6 - given the pattern (?-mix:[a&&]) - scans token 2 as intersection set at 2..4 - given the pattern (?-mix:[&&z]) - scans token 1 as intersection set at 1..3 - given the pattern (?-mix:[&&]) - scans token 1 as intersection set at 1..3 - given the pattern [a\p{digit}c] - scans token 2 as digit property at 2..11 - given the pattern [a\P{digit}c] - scans token 2 as digit nonproperty at 2..11 - given the pattern [a\p{^digit}c] - scans token 2 as digit nonproperty at 2..12 - given the pattern [a\P{^digit}c] - scans token 2 as digit property at 2..12 - given the pattern [a\p{ALPHA}c] - scans token 2 as alpha property at 2..11 - given the pattern [a\p{P}c] - scans token 2 as punctuation property at 2..7 - given the pattern [a\p{P}\P{P}c] - scans token 3 as punctuation nonproperty at 7..12 - given the pattern [\x20-\x27] - scans token 1 as hex escape at 1..5 - scans token 2 as range set at 5..6 - scans token 3 as hex escape at 6..10 - given the pattern [a-w&&[^c-g]z] - scans token 5 as open set at 6..7 - scans token 6 as negate set at 7..8 - scans token 8 as range set at 9..10 - scans token 10 as close set at 11..12 - given the pattern [a[.a-b.]c] - scans token 2 as open set at 2..3 - scans token 3 as literal literal at 3..4 - scans token 4 as literal literal at 4..5 - given the pattern [a[=e=]c] - scans token 2 as open set at 2..3 - scans token 3 as literal literal at 3..4 - scans token 4 as literal literal at 4..5 - given the pattern (?-mix:[れます]) - scans token 0 as open set at 0..1 - scans token 1 as literal literal at 1..2 - scans token 2 as literal literal at 2..3 - scans token 3 as literal literal at 3..4 - scans token 4 as close set at 4..5 - -Type scanning - given the pattern a\dc - scans token 1 as digit type at 1..3 - given the pattern a\Dc - scans token 1 as nondigit type at 1..3 - given the pattern a\hc - scans token 1 as hex type at 1..3 - given the pattern a\Hc - scans token 1 as nonhex type at 1..3 - given the pattern a\sc - scans token 1 as space type at 1..3 - given the pattern a\Sc - scans token 1 as nonspace type at 1..3 - given the pattern a\wc - scans token 1 as word type at 1..3 - given the pattern a\Wc - scans token 1 as nonword type at 1..3 - given the pattern a\Rc - scans token 1 as linebreak type at 1..3 - given the pattern a\Xc - scans token 1 as xgrapheme type at 1..3 - -Regexp::Syntax - ::new is a deprecated alias of ::for - not implemented - supported? - raises for unknown constant lookups - instantiation is deprecated but still works - ::for - is expected to eq Regexp::Syntax::V1_8_6 - is expected to eq Regexp::Syntax::V1_8_6 - is expected to eq Regexp::Syntax::V1_9_1 - is expected to eq Regexp::Syntax::V1_9_3 - is expected to eq Regexp::Syntax::V2_0_0 - is expected to eq Regexp::Syntax::V2_0_0 - is expected to eq Regexp::Syntax::V2_0_0 - is expected to eq Regexp::Syntax::V2_2_0 - is expected to eq Regexp::Syntax::V2_2_0 - is expected to eq Regexp::Syntax::V2_2_0 - is expected to eq Regexp::Syntax::V2_3_0 - is expected to eq Regexp::Syntax::V2_3_0 - is expected to eq Regexp::Syntax::V2_4_0 - is expected to eq Regexp::Syntax::V2_4_1 - is expected to eq Regexp::Syntax::V2_5_0 - is expected to eq Regexp::Syntax::V2_5_0 - is expected to eq Regexp::Syntax::V2_6_0 - is expected to eq Regexp::Syntax::V2_6_2 - is expected to eq Regexp::Syntax::V2_6_3 - is expected to eq Regexp::Syntax::V2_6_3 - is expected to eq Regexp::Syntax::V2_6_3 - is expected to eq Regexp::Syntax::V2_6_3 - is expected to eq Regexp::Syntax::V3_1_0 - is expected to eq Regexp::Syntax::V3_1_0 - is expected to eq Regexp::Syntax::V3_2_0 - is expected to eq Regexp::Syntax::V3_2_0 - is expected to eq Regexp::Syntax::Any - is expected to eq Regexp::Syntax::Any - warns for future versions - raises for unknown names - raises for invalid names - -{:free_space=>[:comment, :whitespace], :literal=>[:literal], :anchor=>[:bol, :eol, :word_boundary, :nonword_boundary, :bos, :eos, :eos_ob_eol, :match_start], :assertion=>[:lookahead, :nlookahead, :lookbehind, :nlookbehind], :backref=>[:number, :name_ref, :number_ref, :number_rel_ref, :name_recursion_ref, :number_recursion_ref, :name_call, :number_call, :number_rel_call], :posixclass=>[:alnum, :alpha, :blank, :cntrl, :digit, :graph, :lower, :print, :punct, :space, :upper, :xdigit, :ascii, :word], :nonposixclass=>[:alnum, :alpha, :blank, :cntrl, :digit, :graph, :lower, :print, :punct, :space, :upper, :xdigit, :ascii, :word], :set=>[:open, :close, :negate, :range, :intersection], :type=>[:digit, :nondigit, :space, :nonspace, :word, :nonword, :hex, :nonhex, :linebreak, :xgrapheme], :conditional=>[:open, :close, :condition_open, :condition, :condition_close, :separator], :escape=>[:backslash, :literal, :control, :meta_sequence, :bell, :backspace, :escape, :form_feed, :newline, :carriage, :tab, :vertical_tab, :codepoint, :codepoint_list, :dot, :alternation, :zero_or_one, :zero_or_more, :one_or_more, :bol, :eol, :group_open, :group_close, :interval_open, :interval_close, :set_open, :set_close, :hex, :octal], :group=>[:capture, :close, :options, :options_switch, :named, :atomic, :passive, :comment, :absence], :keep=>[:mark], :meta=>[:dot, :alternation], :quantifier=>[:zero_or_one, :zero_or_more, :one_or_more, :zero_or_one_reluctant, :zero_or_more_reluctant, :one_or_more_reluctant, :zero_or_one_possessive, :zero_or_more_possessive, :one_or_more_possessive, :interval, :interval_reluctant, :interval_possessive], :property=>[:letter, :uppercase_letter, :lowercase_letter, :titlecase_letter, :modifier_letter, :other_letter, :mark, :nonspacing_mark, :spacing_mark, :enclosing_mark, :number, :decimal_number, :letter_number, :other_number, :punctuation, :connector_punctuation, :dash_punctuation, :open_punctuation, :close_punctuation, :initial_punctuation, :final_punctuation, :other_punctuation, :symbol, :math_symbol, :currency_symbol, :modifier_symbol, :other_symbol, :separator, :space_separator, :line_separator, :paragraph_separator, :other, :control, :format, :surrogate, :private_use, :unassigned, :any, :assigned, :newline, :alnum, :alpha, :ascii, :blank, :cntrl, :digit, :graph, :lower, :print, :punct, :space, :upper, :word, :xdigit, :ascii_hex_digit, :alphabetic, :cased, :changes_when_casefolded, :changes_when_casemapped, :changes_when_lowercased, :changes_when_titlecased, :changes_when_uppercased, :case_ignorable, :bidi_control, :dash, :deprecated, :default_ignorable_code_point, :diacritic, :extender, :grapheme_base, :grapheme_extend, :grapheme_link, :hex_digit, :hyphen, :id_continue, :ideographic, :id_start, :ids_binary_operator, :ids_trinary_operator, :join_control, :logical_order_exception, :lowercase, :math, :noncharacter_code_point, :other_alphabetic, :other_default_ignorable_code_point, :other_grapheme_extend, :other_id_continue, :other_id_start, :other_lowercase, :other_math, :other_uppercase, :pattern_syntax, :pattern_white_space, :quotation_mark, :radical, :sentence_terminal, :soft_dotted, :terminal_punctuation, :unified_ideograph, :uppercase, :variation_selector, :white_space, :xid_start, :xid_continue, :arabic, :imperial_aramaic, :armenian, :avestan, :balinese, :bamum, :bengali, :bopomofo, :braille, :buginese, :buhid, :canadian_aboriginal, :carian, :cham, :cherokee, :coptic, :cypriot, :cyrillic, :devanagari, :deseret, :egyptian_hieroglyphs, :ethiopic, :georgian, :glagolitic, :gothic, :greek, :gujarati, :gurmukhi, :hangul, :han, :hanunoo, :hebrew, :hiragana, :old_italic, :javanese, :kayah_li, :katakana, :kharoshthi, :khmer, :kannada, :kaithi, :tai_tham, :lao, :latin, :lepcha, :limbu, :linear_b, :lisu, :lycian, :lydian, :malayalam, :mongolian, :meetei_mayek, :myanmar, :nko, :ogham, :ol_chiki, :old_turkic, :oriya, :osmanya, :phags_pa, :inscriptional_pahlavi, :phoenician, :inscriptional_parthian, :rejang, :runic, :samaritan, :old_south_arabian, :saurashtra, :shavian, :sinhala, :sundanese, :syloti_nagri, :syriac, :tagbanwa, :tai_le, :new_tai_lue, :tamil, :tai_viet, :telugu, :tifinagh, :tagalog, :thaana, :thai, :tibetan, :ugaritic, :vai, :old_persian, :cuneiform, :yi, :inherited, :common, :unknown, :in_alphabetic_presentation_forms, :in_arabic, :in_armenian, :in_arrows, :in_basic_latin, :in_bengali, :in_block_elements, :in_bopomofo_extended, :in_bopomofo, :in_box_drawing, :in_braille_patterns, :in_buhid, :in_cjk_compatibility_forms, :in_cjk_compatibility_ideographs, :in_cjk_compatibility, :in_cjk_radicals_supplement, :in_cjk_symbols_and_punctuation, :in_cjk_unified_ideographs_extension_a, :in_cjk_unified_ideographs, :in_cherokee, :in_combining_diacritical_marks_for_symbols, :in_combining_diacritical_marks, :in_combining_half_marks, :in_control_pictures, :in_currency_symbols, :in_cyrillic_supplement, :in_cyrillic, :in_devanagari, :in_dingbats, :in_enclosed_alphanumerics, :in_enclosed_cjk_letters_and_months, :in_ethiopic, :in_general_punctuation, :in_geometric_shapes, :in_georgian, :in_greek_extended, :in_greek_and_coptic, :in_gujarati, :in_gurmukhi, :in_halfwidth_and_fullwidth_forms, :in_hangul_compatibility_jamo, :in_hangul_jamo, :in_hangul_syllables, :in_hanunoo, :in_hebrew, :in_high_private_use_surrogates, :in_high_surrogates, :in_hiragana, :in_ipa_extensions, :in_ideographic_description_characters, :in_kanbun, :in_kangxi_radicals, :in_kannada, :in_katakana_phonetic_extensions, :in_katakana, :in_khmer_symbols, :in_khmer, :in_lao, :in_latin_extended_additional, :in_letterlike_symbols, :in_limbu, :in_low_surrogates, :in_malayalam, :in_mathematical_operators, :in_miscellaneous_symbols_and_arrows, :in_miscellaneous_symbols, :in_miscellaneous_technical, :in_mongolian, :in_myanmar, :in_number_forms, :in_ogham, :in_optical_character_recognition, :in_oriya, :in_phonetic_extensions, :in_private_use_area, :in_runic, :in_sinhala, :in_small_form_variants, :in_spacing_modifier_letters, :in_specials, :in_superscripts_and_subscripts, :in_supplemental_mathematical_operators, :in_syriac, :in_tagalog, :in_tagbanwa, :in_tai_le, :in_tamil, :in_telugu, :in_thaana, :in_thai, :in_tibetan, :in_unified_canadian_aboriginal_syllabics, :in_variation_selectors, :in_yi_radicals, :in_yi_syllables, :in_yijing_hexagram_symbols, :"age=1.1", :"age=2.0", :"age=2.1", :"age=3.0", :"age=3.1", :"age=3.2", :"age=4.0", :"age=4.1", :"age=5.0", :"age=5.1", :"age=5.2", :"age=6.0", :brahmi, :batak, :mandaic, :"age=6.1", :cased_letter, :combining_mark, :chakma, :meroitic_cursive, :meroitic_hieroglyphs, :miao, :sharada, :sora_sompeng, :takri, :in_aegean_numbers, :in_alchemical_symbols, :in_ancient_greek_musical_notation, :in_ancient_greek_numbers, :in_ancient_symbols, :in_arabic_extended_a, :in_arabic_mathematical_alphabetic_symbols, :in_arabic_presentation_forms_a, :in_arabic_presentation_forms_b, :in_arabic_supplement, :in_avestan, :in_balinese, :in_bamum, :in_bamum_supplement, :in_batak, :in_brahmi, :in_buginese, :in_byzantine_musical_symbols, :in_cjk_compatibility_ideographs_supplement, :in_cjk_strokes, :in_cjk_unified_ideographs_extension_b, :in_cjk_unified_ideographs_extension_c, :in_cjk_unified_ideographs_extension_d, :in_carian, :in_chakma, :in_cham, :in_combining_diacritical_marks_supplement, :in_common_indic_number_forms, :in_coptic, :in_counting_rod_numerals, :in_cuneiform, :in_cuneiform_numbers_and_punctuation, :in_cypriot_syllabary, :in_cyrillic_extended_a, :in_cyrillic_extended_b, :in_deseret, :in_devanagari_extended, :in_domino_tiles, :in_egyptian_hieroglyphs, :in_emoticons, :in_enclosed_alphanumeric_supplement, :in_enclosed_ideographic_supplement, :in_ethiopic_extended, :in_ethiopic_extended_a, :in_ethiopic_supplement, :in_georgian_supplement, :in_glagolitic, :in_gothic, :in_hangul_jamo_extended_a, :in_hangul_jamo_extended_b, :in_imperial_aramaic, :in_inscriptional_pahlavi, :in_inscriptional_parthian, :in_javanese, :in_kaithi, :in_kana_supplement, :in_kayah_li, :in_kharoshthi, :in_latin_1_supplement, :in_latin_extended_a, :in_latin_extended_b, :in_latin_extended_c, :in_latin_extended_d, :in_lepcha, :in_linear_b_ideograms, :in_linear_b_syllabary, :in_lisu, :in_lycian, :in_lydian, :in_mahjong_tiles, :in_mandaic, :in_mathematical_alphanumeric_symbols, :in_meetei_mayek, :in_meetei_mayek_extensions, :in_meroitic_cursive, :in_meroitic_hieroglyphs, :in_miao, :in_miscellaneous_mathematical_symbols_a, :in_miscellaneous_mathematical_symbols_b, :in_miscellaneous_symbols_and_pictographs, :in_modifier_tone_letters, :in_musical_symbols, :in_myanmar_extended_a, :in_nko, :in_new_tai_lue, :in_no_block, :in_ol_chiki, :in_old_italic, :in_old_persian, :in_old_south_arabian, :in_old_turkic, :in_osmanya, :in_phags_pa, :in_phaistos_disc, :in_phoenician, :in_phonetic_extensions_supplement, :in_playing_cards, :in_rejang, :in_rumi_numeral_symbols, :in_samaritan, :in_saurashtra, :in_sharada, :in_shavian, :in_sora_sompeng, :in_sundanese, :in_sundanese_supplement, :in_supplemental_arrows_a, :in_supplemental_arrows_b, :in_supplemental_punctuation, :in_supplementary_private_use_area_a, :in_supplementary_private_use_area_b, :in_syloti_nagri, :in_tags, :in_tai_tham, :in_tai_viet, :in_tai_xuan_jing_symbols, :in_takri, :in_tifinagh, :in_transport_and_map_symbols, :in_ugaritic, :in_unified_canadian_aboriginal_syllabics_extended, :in_vai, :in_variation_selectors_supplement, :in_vedic_extensions, :in_vertical_forms, :"age=6.2", :"age=6.3", :"age=7.0", :caucasian_albanian, :bassa_vah, :duployan, :elbasan, :grantha, :pahawh_hmong, :khojki, :linear_a, :mahajani, :manichaean, :mende_kikakui, :modi, :mro, :old_north_arabian, :nabataean, :palmyrene, :pau_cin_hau, :old_permic, :psalter_pahlavi, :siddham, :khudawadi, :tirhuta, :warang_citi, :in_bassa_vah, :in_caucasian_albanian, :in_combining_diacritical_marks_extended, :in_coptic_epact_numbers, :in_duployan, :in_elbasan, :in_geometric_shapes_extended, :in_grantha, :in_khojki, :in_khudawadi, :in_latin_extended_e, :in_linear_a, :in_mahajani, :in_manichaean, :in_mende_kikakui, :in_modi, :in_mro, :in_myanmar_extended_b, :in_nabataean, :in_old_north_arabian, :in_old_permic, :in_ornamental_dingbats, :in_pahawh_hmong, :in_palmyrene, :in_pau_cin_hau, :in_psalter_pahlavi, :in_shorthand_format_controls, :in_siddham, :in_sinhala_archaic_numbers, :in_supplemental_arrows_c, :in_tirhuta, :in_warang_citi, :"age=8.0", :ahom, :anatolian_hieroglyphs, :hatran, :multani, :old_hungarian, :signwriting, :in_ahom, :in_anatolian_hieroglyphs, :in_cjk_unified_ideographs_extension_e, :in_cherokee_supplement, :in_early_dynastic_cuneiform, :in_hatran, :in_multani, :in_old_hungarian, :in_supplemental_symbols_and_pictographs, :in_sutton_signwriting, :"age=9.0", :prepended_concatenation_mark, :adlam, :bhaiksuki, :marchen, :newa, :osage, :tangut, :in_adlam, :in_bhaiksuki, :in_cyrillic_extended_c, :in_glagolitic_supplement, :in_ideographic_symbols_and_punctuation, :in_marchen, :in_mongolian_supplement, :in_newa, :in_osage, :in_tangut, :in_tangut_components, :xposixpunct, :"age=10.0", :regional_indicator, :masaram_gondi, :nushu, :soyombo, :zanabazar_square, :in_cjk_unified_ideographs_extension_f, :in_kana_extended_a, :in_masaram_gondi, :in_nushu, :in_soyombo, :in_syriac_supplement, :in_zanabazar_square, :emoji, :emoji_component, :emoji_modifier, :emoji_modifier_base, :emoji_presentation, :"age=11.0", :dogra, :gunjala_gondi, :hanifi_rohingya, :makasar, :medefaidrin, :old_sogdian, :sogdian, :in_chess_symbols, :in_dogra, :in_georgian_extended, :in_gunjala_gondi, :in_hanifi_rohingya, :in_indic_siyaq_numbers, :in_makasar, :in_mayan_numerals, :in_medefaidrin, :in_old_sogdian, :in_sogdian, :"age=12.0", :elymaic, :nandinagari, :nyiakeng_puachue_hmong, :wancho, :in_egyptian_hieroglyph_format_controls, :in_elymaic, :in_nandinagari, :in_nyiakeng_puachue_hmong, :in_ottoman_siyaq_numbers, :in_small_kana_extension, :in_symbols_and_pictographs_extended_a, :in_tamil_supplement, :in_wancho, :"age=12.1", :"age=13.0", :chorasmian, :dives_akuru, :khitan_small_script, :yezidi, :in_chorasmian, :in_cjk_unified_ideographs_extension_g, :in_dives_akuru, :in_khitan_small_script, :in_lisu_supplement, :in_symbols_for_legacy_computing, :in_tangut_supplement, :in_yezidi, :"age=14.0", :cypro_minoan, :old_uyghur, :tangsa, :toto, :vithkuqi, :in_arabic_extended_b, :in_cypro_minoan, :in_ethiopic_extended_b, :in_kana_extended_b, :in_latin_extended_f, :in_latin_extended_g, :in_old_uyghur, :in_tangsa, :in_toto, :in_unified_canadian_aboriginal_syllabics_extended_a, :in_vithkuqi, :in_znamenny_musical_notation], :nonproperty=>[:letter, :uppercase_letter, :lowercase_letter, :titlecase_letter, :modifier_letter, :other_letter, :mark, :nonspacing_mark, :spacing_mark, :enclosing_mark, :number, :decimal_number, :letter_number, :other_number, :punctuation, :connector_punctuation, :dash_punctuation, :open_punctuation, :close_punctuation, :initial_punctuation, :final_punctuation, :other_punctuation, :symbol, :math_symbol, :currency_symbol, :modifier_symbol, :other_symbol, :separator, :space_separator, :line_separator, :paragraph_separator, :other, :control, :format, :surrogate, :private_use, :unassigned, :any, :assigned, :newline, :alnum, :alpha, :ascii, :blank, :cntrl, :digit, :graph, :lower, :print, :punct, :space, :upper, :word, :xdigit, :ascii_hex_digit, :alphabetic, :cased, :changes_when_casefolded, :changes_when_casemapped, :changes_when_lowercased, :changes_when_titlecased, :changes_when_uppercased, :case_ignorable, :bidi_control, :dash, :deprecated, :default_ignorable_code_point, :diacritic, :extender, :grapheme_base, :grapheme_extend, :grapheme_link, :hex_digit, :hyphen, :id_continue, :ideographic, :id_start, :ids_binary_operator, :ids_trinary_operator, :join_control, :logical_order_exception, :lowercase, :math, :noncharacter_code_point, :other_alphabetic, :other_default_ignorable_code_point, :other_grapheme_extend, :other_id_continue, :other_id_start, :other_lowercase, :other_math, :other_uppercase, :pattern_syntax, :pattern_white_space, :quotation_mark, :radical, :sentence_terminal, :soft_dotted, :terminal_punctuation, :unified_ideograph, :uppercase, :variation_selector, :white_space, :xid_start, :xid_continue, :arabic, :imperial_aramaic, :armenian, :avestan, :balinese, :bamum, :bengali, :bopomofo, :braille, :buginese, :buhid, :canadian_aboriginal, :carian, :cham, :cherokee, :coptic, :cypriot, :cyrillic, :devanagari, :deseret, :egyptian_hieroglyphs, :ethiopic, :georgian, :glagolitic, :gothic, :greek, :gujarati, :gurmukhi, :hangul, :han, :hanunoo, :hebrew, :hiragana, :old_italic, :javanese, :kayah_li, :katakana, :kharoshthi, :khmer, :kannada, :kaithi, :tai_tham, :lao, :latin, :lepcha, :limbu, :linear_b, :lisu, :lycian, :lydian, :malayalam, :mongolian, :meetei_mayek, :myanmar, :nko, :ogham, :ol_chiki, :old_turkic, :oriya, :osmanya, :phags_pa, :inscriptional_pahlavi, :phoenician, :inscriptional_parthian, :rejang, :runic, :samaritan, :old_south_arabian, :saurashtra, :shavian, :sinhala, :sundanese, :syloti_nagri, :syriac, :tagbanwa, :tai_le, :new_tai_lue, :tamil, :tai_viet, :telugu, :tifinagh, :tagalog, :thaana, :thai, :tibetan, :ugaritic, :vai, :old_persian, :cuneiform, :yi, :inherited, :common, :unknown, :in_alphabetic_presentation_forms, :in_arabic, :in_armenian, :in_arrows, :in_basic_latin, :in_bengali, :in_block_elements, :in_bopomofo_extended, :in_bopomofo, :in_box_drawing, :in_braille_patterns, :in_buhid, :in_cjk_compatibility_forms, :in_cjk_compatibility_ideographs, :in_cjk_compatibility, :in_cjk_radicals_supplement, :in_cjk_symbols_and_punctuation, :in_cjk_unified_ideographs_extension_a, :in_cjk_unified_ideographs, :in_cherokee, :in_combining_diacritical_marks_for_symbols, :in_combining_diacritical_marks, :in_combining_half_marks, :in_control_pictures, :in_currency_symbols, :in_cyrillic_supplement, :in_cyrillic, :in_devanagari, :in_dingbats, :in_enclosed_alphanumerics, :in_enclosed_cjk_letters_and_months, :in_ethiopic, :in_general_punctuation, :in_geometric_shapes, :in_georgian, :in_greek_extended, :in_greek_and_coptic, :in_gujarati, :in_gurmukhi, :in_halfwidth_and_fullwidth_forms, :in_hangul_compatibility_jamo, :in_hangul_jamo, :in_hangul_syllables, :in_hanunoo, :in_hebrew, :in_high_private_use_surrogates, :in_high_surrogates, :in_hiragana, :in_ipa_extensions, :in_ideographic_description_characters, :in_kanbun, :in_kangxi_radicals, :in_kannada, :in_katakana_phonetic_extensions, :in_katakana, :in_khmer_symbols, :in_khmer, :in_lao, :in_latin_extended_additional, :in_letterlike_symbols, :in_limbu, :in_low_surrogates, :in_malayalam, :in_mathematical_operators, :in_miscellaneous_symbols_and_arrows, :in_miscellaneous_symbols, :in_miscellaneous_technical, :in_mongolian, :in_myanmar, :in_number_forms, :in_ogham, :in_optical_character_recognition, :in_oriya, :in_phonetic_extensions, :in_private_use_area, :in_runic, :in_sinhala, :in_small_form_variants, :in_spacing_modifier_letters, :in_specials, :in_superscripts_and_subscripts, :in_supplemental_mathematical_operators, :in_syriac, :in_tagalog, :in_tagbanwa, :in_tai_le, :in_tamil, :in_telugu, :in_thaana, :in_thai, :in_tibetan, :in_unified_canadian_aboriginal_syllabics, :in_variation_selectors, :in_yi_radicals, :in_yi_syllables, :in_yijing_hexagram_symbols, :"age=1.1", :"age=2.0", :"age=2.1", :"age=3.0", :"age=3.1", :"age=3.2", :"age=4.0", :"age=4.1", :"age=5.0", :"age=5.1", :"age=5.2", :"age=6.0", :brahmi, :batak, :mandaic, :"age=6.1", :cased_letter, :combining_mark, :chakma, :meroitic_cursive, :meroitic_hieroglyphs, :miao, :sharada, :sora_sompeng, :takri, :in_aegean_numbers, :in_alchemical_symbols, :in_ancient_greek_musical_notation, :in_ancient_greek_numbers, :in_ancient_symbols, :in_arabic_extended_a, :in_arabic_mathematical_alphabetic_symbols, :in_arabic_presentation_forms_a, :in_arabic_presentation_forms_b, :in_arabic_supplement, :in_avestan, :in_balinese, :in_bamum, :in_bamum_supplement, :in_batak, :in_brahmi, :in_buginese, :in_byzantine_musical_symbols, :in_cjk_compatibility_ideographs_supplement, :in_cjk_strokes, :in_cjk_unified_ideographs_extension_b, :in_cjk_unified_ideographs_extension_c, :in_cjk_unified_ideographs_extension_d, :in_carian, :in_chakma, :in_cham, :in_combining_diacritical_marks_supplement, :in_common_indic_number_forms, :in_coptic, :in_counting_rod_numerals, :in_cuneiform, :in_cuneiform_numbers_and_punctuation, :in_cypriot_syllabary, :in_cyrillic_extended_a, :in_cyrillic_extended_b, :in_deseret, :in_devanagari_extended, :in_domino_tiles, :in_egyptian_hieroglyphs, :in_emoticons, :in_enclosed_alphanumeric_supplement, :in_enclosed_ideographic_supplement, :in_ethiopic_extended, :in_ethiopic_extended_a, :in_ethiopic_supplement, :in_georgian_supplement, :in_glagolitic, :in_gothic, :in_hangul_jamo_extended_a, :in_hangul_jamo_extended_b, :in_imperial_aramaic, :in_inscriptional_pahlavi, :in_inscriptional_parthian, :in_javanese, :in_kaithi, :in_kana_supplement, :in_kayah_li, :in_kharoshthi, :in_latin_1_supplement, :in_latin_extended_a, :in_latin_extended_b, :in_latin_extended_c, :in_latin_extended_d, :in_lepcha, :in_linear_b_ideograms, :in_linear_b_syllabary, :in_lisu, :in_lycian, :in_lydian, :in_mahjong_tiles, :in_mandaic, :in_mathematical_alphanumeric_symbols, :in_meetei_mayek, :in_meetei_mayek_extensions, :in_meroitic_cursive, :in_meroitic_hieroglyphs, :in_miao, :in_miscellaneous_mathematical_symbols_a, :in_miscellaneous_mathematical_symbols_b, :in_miscellaneous_symbols_and_pictographs, :in_modifier_tone_letters, :in_musical_symbols, :in_myanmar_extended_a, :in_nko, :in_new_tai_lue, :in_no_block, :in_ol_chiki, :in_old_italic, :in_old_persian, :in_old_south_arabian, :in_old_turkic, :in_osmanya, :in_phags_pa, :in_phaistos_disc, :in_phoenician, :in_phonetic_extensions_supplement, :in_playing_cards, :in_rejang, :in_rumi_numeral_symbols, :in_samaritan, :in_saurashtra, :in_sharada, :in_shavian, :in_sora_sompeng, :in_sundanese, :in_sundanese_supplement, :in_supplemental_arrows_a, :in_supplemental_arrows_b, :in_supplemental_punctuation, :in_supplementary_private_use_area_a, :in_supplementary_private_use_area_b, :in_syloti_nagri, :in_tags, :in_tai_tham, :in_tai_viet, :in_tai_xuan_jing_symbols, :in_takri, :in_tifinagh, :in_transport_and_map_symbols, :in_ugaritic, :in_unified_canadian_aboriginal_syllabics_extended, :in_vai, :in_variation_selectors_supplement, :in_vedic_extensions, :in_vertical_forms, :"age=6.2", :"age=6.3", :"age=7.0", :caucasian_albanian, :bassa_vah, :duployan, :elbasan, :grantha, :pahawh_hmong, :khojki, :linear_a, :mahajani, :manichaean, :mende_kikakui, :modi, :mro, :old_north_arabian, :nabataean, :palmyrene, :pau_cin_hau, :old_permic, :psalter_pahlavi, :siddham, :khudawadi, :tirhuta, :warang_citi, :in_bassa_vah, :in_caucasian_albanian, :in_combining_diacritical_marks_extended, :in_coptic_epact_numbers, :in_duployan, :in_elbasan, :in_geometric_shapes_extended, :in_grantha, :in_khojki, :in_khudawadi, :in_latin_extended_e, :in_linear_a, :in_mahajani, :in_manichaean, :in_mende_kikakui, :in_modi, :in_mro, :in_myanmar_extended_b, :in_nabataean, :in_old_north_arabian, :in_old_permic, :in_ornamental_dingbats, :in_pahawh_hmong, :in_palmyrene, :in_pau_cin_hau, :in_psalter_pahlavi, :in_shorthand_format_controls, :in_siddham, :in_sinhala_archaic_numbers, :in_supplemental_arrows_c, :in_tirhuta, :in_warang_citi, :"age=8.0", :ahom, :anatolian_hieroglyphs, :hatran, :multani, :old_hungarian, :signwriting, :in_ahom, :in_anatolian_hieroglyphs, :in_cjk_unified_ideographs_extension_e, :in_cherokee_supplement, :in_early_dynastic_cuneiform, :in_hatran, :in_multani, :in_old_hungarian, :in_supplemental_symbols_and_pictographs, :in_sutton_signwriting, :"age=9.0", :prepended_concatenation_mark, :adlam, :bhaiksuki, :marchen, :newa, :osage, :tangut, :in_adlam, :in_bhaiksuki, :in_cyrillic_extended_c, :in_glagolitic_supplement, :in_ideographic_symbols_and_punctuation, :in_marchen, :in_mongolian_supplement, :in_newa, :in_osage, :in_tangut, :in_tangut_components, :xposixpunct, :"age=10.0", :regional_indicator, :masaram_gondi, :nushu, :soyombo, :zanabazar_square, :in_cjk_unified_ideographs_extension_f, :in_kana_extended_a, :in_masaram_gondi, :in_nushu, :in_soyombo, :in_syriac_supplement, :in_zanabazar_square, :emoji, :emoji_component, :emoji_modifier, :emoji_modifier_base, :emoji_presentation, :"age=11.0", :dogra, :gunjala_gondi, :hanifi_rohingya, :makasar, :medefaidrin, :old_sogdian, :sogdian, :in_chess_symbols, :in_dogra, :in_georgian_extended, :in_gunjala_gondi, :in_hanifi_rohingya, :in_indic_siyaq_numbers, :in_makasar, :in_mayan_numerals, :in_medefaidrin, :in_old_sogdian, :in_sogdian, :"age=12.0", :elymaic, :nandinagari, :nyiakeng_puachue_hmong, :wancho, :in_egyptian_hieroglyph_format_controls, :in_elymaic, :in_nandinagari, :in_nyiakeng_puachue_hmong, :in_ottoman_siyaq_numbers, :in_small_kana_extension, :in_symbols_and_pictographs_extended_a, :in_tamil_supplement, :in_wancho, :"age=12.1", :"age=13.0", :chorasmian, :dives_akuru, :khitan_small_script, :yezidi, :in_chorasmian, :in_cjk_unified_ideographs_extension_g, :in_dives_akuru, :in_khitan_small_script, :in_lisu_supplement, :in_symbols_for_legacy_computing, :in_tangut_supplement, :in_yezidi, :"age=14.0", :cypro_minoan, :old_uyghur, :tangsa, :toto, :vithkuqi, :in_arabic_extended_b, :in_cypro_minoan, :in_ethiopic_extended_b, :in_kana_extended_b, :in_latin_extended_f, :in_latin_extended_g, :in_old_uyghur, :in_tangsa, :in_toto, :in_unified_canadian_aboriginal_syllabics_extended_a, :in_vithkuqi, :in_znamenny_musical_notation]} - is complete - contains no duplicate tokens - contains no duplicate type/token combinations - -Regexp::Syntax::V1_8_6 - implements lookahead assertion - implements nlookahead assertion - implements number backref - implements backslash escape - implements literal escape - implements bell escape - implements backspace escape - implements escape escape - implements form_feed escape - implements newline escape - implements carriage escape - implements tab escape - implements vertical_tab escape - implements dot escape - implements alternation escape - implements zero_or_one escape - implements zero_or_more escape - implements one_or_more escape - implements bol escape - implements eol escape - implements group_open escape - implements group_close escape - implements interval_open escape - implements interval_close escape - implements set_open escape - implements set_close escape - implements control escape - implements meta_sequence escape - implements capture group - implements close group - implements options group - implements options_switch group - implements named group - implements atomic group - implements passive group - implements comment group - implements zero_or_one quantifier - implements zero_or_more quantifier - implements one_or_more quantifier - implements zero_or_one_reluctant quantifier - implements zero_or_more_reluctant quantifier - implements one_or_more_reluctant quantifier - implements interval quantifier - implements interval_reluctant quantifier - does not implement lookbehind assertion - does not implement nlookbehind assertion - does not implement name_ref backref - does not implement number_ref backref - does not implement number_rel_ref backref - does not implement name_recursion_ref backref - does not implement number_recursion_ref backref - does not implement name_call backref - does not implement number_call backref - does not implement number_rel_call backref - does not implement zero_or_one_possessive quantifier - does not implement zero_or_more_possessive quantifier - does not implement one_or_more_possessive quantifier - -Regexp::Syntax::V1_9_1 - implements hex escape - implements octal escape - implements codepoint escape - implements codepoint_list escape - implements hex type - implements nonhex type - implements zero_or_one quantifier - implements zero_or_more quantifier - implements one_or_more quantifier - implements zero_or_one_reluctant quantifier - implements zero_or_more_reluctant quantifier - implements one_or_more_reluctant quantifier - implements zero_or_one_possessive quantifier - implements zero_or_more_possessive quantifier - implements one_or_more_possessive quantifier - -Regexp::Syntax::V1_9_3 - implements brahmi property - implements batak property - implements mandaic property - implements age=1.1 property - implements age=2.0 property - implements age=2.1 property - implements age=3.0 property - implements age=3.1 property - implements age=3.2 property - implements age=4.0 property - implements age=4.1 property - implements age=5.0 property - implements age=5.1 property - implements age=5.2 property - implements age=6.0 property - implements brahmi nonproperty - implements batak nonproperty - implements mandaic nonproperty - implements age=1.1 nonproperty - implements age=2.0 nonproperty - implements age=2.1 nonproperty - implements age=3.0 nonproperty - implements age=3.1 nonproperty - implements age=3.2 nonproperty - implements age=4.0 nonproperty - implements age=4.1 nonproperty - implements age=5.0 nonproperty - implements age=5.1 nonproperty - implements age=5.2 nonproperty - implements age=6.0 nonproperty - -Regexp::Syntax::V2_0_0 - implements age=6.1 property - implements age=6.1 nonproperty - does not implement newline property - does not implement newline nonproperty - -Regexp::Syntax::V2_2_0 - implements caucasian_albanian property - implements bassa_vah property - implements duployan property - implements elbasan property - implements grantha property - implements pahawh_hmong property - implements khojki property - implements linear_a property - implements mahajani property - implements manichaean property - implements mende_kikakui property - implements modi property - implements mro property - implements old_north_arabian property - implements nabataean property - implements palmyrene property - implements pau_cin_hau property - implements old_permic property - implements psalter_pahlavi property - implements siddham property - implements khudawadi property - implements tirhuta property - implements warang_citi property - implements age=6.2 property - implements age=6.3 property - implements age=7.0 property - implements caucasian_albanian nonproperty - implements bassa_vah nonproperty - implements duployan nonproperty - implements elbasan nonproperty - implements grantha nonproperty - implements pahawh_hmong nonproperty - implements khojki nonproperty - implements linear_a nonproperty - implements mahajani nonproperty - implements manichaean nonproperty - implements mende_kikakui nonproperty - implements modi nonproperty - implements mro nonproperty - implements old_north_arabian nonproperty - implements nabataean nonproperty - implements palmyrene nonproperty - implements pau_cin_hau nonproperty - implements old_permic nonproperty - implements psalter_pahlavi nonproperty - implements siddham nonproperty - implements khudawadi nonproperty - implements tirhuta nonproperty - implements warang_citi nonproperty - implements age=6.2 nonproperty - implements age=6.3 nonproperty - implements age=7.0 nonproperty - -Regexp::Syntax::V3_2_0 - implements cypro_minoan property - implements old_uyghur property - implements tangsa property - implements toto property - implements vithkuqi property - implements age=14.0 property - implements cypro_minoan nonproperty - implements old_uyghur nonproperty - implements tangsa nonproperty - implements toto nonproperty - implements vithkuqi nonproperty - implements age=14.0 nonproperty - -Regexp::Token - #offset - #length - #to_h - #next - #previous - -Finished in 0.99531 seconds (files took 0.49743 seconds to load) -1861 examples, 0 failures - +DEB_BUILD_OPTIONS includes nocheck, skipping all checks (test suite etc). ┌──────────────────────────────────────────────────────────────────────────────┐ │ dh_ruby --install finished │ @@ -3329,12 +668,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: including full source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/108290/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/108290/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/1048199 and its subdirectories -I: Current time: Fri Dec 25 14:02:26 -12 2026 -I: pbuilder-time-stamp: 1798250546 +I: removing directory /srv/workspace/pbuilder/108290 and its subdirectories +I: Current time: Sun Nov 23 09:40:03 +14 2025 +I: pbuilder-time-stamp: 1763840403