regexp-examples 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +25 -13
- data/coverage/.gitignore +4 -0
- data/coverage/coverage-badge.png +0 -0
- data/lib/regexp-examples.rb +1 -1
- data/lib/regexp-examples/core_extensions/regexp/examples.rb +16 -0
- data/lib/regexp-examples/parser.rb +23 -11
- data/lib/regexp-examples/version.rb +1 -1
- data/spec/regexp-examples_spec.rb +2 -0
- metadata +5 -32
- data/coverage/.last_run.json +0 -5
- data/coverage/.resultset.json +0 -906
- data/coverage/.resultset.json.lock +0 -0
- data/coverage/assets/0.8.0/application.css +0 -799
- data/coverage/assets/0.8.0/application.js +0 -1559
- data/coverage/assets/0.8.0/colorbox/border.png +0 -0
- data/coverage/assets/0.8.0/colorbox/controls.png +0 -0
- data/coverage/assets/0.8.0/colorbox/loading.gif +0 -0
- data/coverage/assets/0.8.0/colorbox/loading_background.png +0 -0
- data/coverage/assets/0.8.0/favicon_green.png +0 -0
- data/coverage/assets/0.8.0/favicon_red.png +0 -0
- data/coverage/assets/0.8.0/favicon_yellow.png +0 -0
- data/coverage/assets/0.8.0/loading.gif +0 -0
- data/coverage/assets/0.8.0/magnify.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/coverage/index.html +0 -5626
- data/lib/regexp-examples/regexp_extensions.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e6b6bd1d3602690963b1f1ecb61dbb91b38d0847
|
4
|
+
data.tar.gz: c104bcd97175689467336fa4c11f4f187d483332
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 75662efea94170727d89f7f88335a02ab688cbe37a587a01d1c08b72ab69e64ff3bdc0ff2faef91ebb9622b0f465b67843620d3219639cc41156800f59d8ed22
|
7
|
+
data.tar.gz: 85b54784013793a0a192cf2b456eb48fab304be07c87149726f3379a7409ae2a3f3fdc66c592b526d6c634d4a2bea0a53b60c0ea226fd295191549a6e8f67f2c
|
data/README.md
CHANGED
@@ -9,7 +9,8 @@ This method generates a list of (some\*) strings that will match the given regul
|
|
9
9
|
|
10
10
|
\* If the regex has an infinite number of possible srings that match it, such as `/a*b+c{2,}/`,
|
11
11
|
or a huge number of possible matches, such as `/.\w/`, then only a subset of these will be listed.
|
12
|
-
|
12
|
+
|
13
|
+
For more detail on this, see [configuration options](#configuration-options).
|
13
14
|
|
14
15
|
## Usage
|
15
16
|
|
@@ -41,9 +42,29 @@ For more detail on this, see [configuration options](#configuration_options).
|
|
41
42
|
* Unicode characters, e.g. `/\u0123/`, `/\uabcd/`, `/\u{789}/`
|
42
43
|
* **Arbitrarily complex combinations of all the above!**
|
43
44
|
|
44
|
-
## Not-Yet-Supported syntax
|
45
|
+
## Bugs and Not-Yet-Supported syntax
|
46
|
+
|
47
|
+
* Backreferences are replaced by the _first_ occurance of the group, not the _last_ (as it should be). This is quite a rare occurance, but for example:
|
48
|
+
* `/(a|b){2} \1/.examples` incorrectly includes: `"ba b"` rather than the correct: `"ba a"`
|
49
|
+
|
50
|
+
* Options, e.g. `/pattern/i`, `/foo.*bar/m` - Using options will currently just be ignored, for example:
|
51
|
+
* `/test/i.examples` will NOT include `"TEST"`
|
52
|
+
* `/white space/x.examples` will not strip out the whitespace from the pattern, i.e. this incorrectly returns `["white space"]` rather than `["whitespace"]`
|
53
|
+
|
54
|
+
* Nested character classes, and the use of set intersection ([See here](http://www.ruby-doc.org/core-2.2.0/Regexp.html#class-Regexp-label-Character+Classes) for the official documentation on this.) For example:
|
55
|
+
* `/[[abc]]/.examples` (which _should_ return `["a", "b", "c"]`)
|
56
|
+
* `/[[a-d]&&[c-f]]/.examples` (which _should_ return: `["c", "d"]`)
|
57
|
+
|
58
|
+
* Extended groups are not yet supported, such as:
|
59
|
+
* Including comments inside the pattern, i.e. `/(?#...)/`
|
60
|
+
* Conditional capture groups, such as `/(group1) (?(1)yes|no)`
|
61
|
+
* Options toggling, i.e. `/(?imx)/`, `/(?-imx)/`, `/(?imx: re)/` and `/(?-imx: re)/`
|
62
|
+
|
63
|
+
* Possessive quantifiers, i.e. `/.?+/`, `/.*+/`, `/.++/`
|
45
64
|
|
46
|
-
*
|
65
|
+
* The patterns: `/\10/` ... `/\77/` should match the octal representation of their character code, if there is no nth grouped subexpression. For example, `/\10/.examples` should return `["\x08"]`. Funnily enough, I did not think of this when writing my regexp parser.
|
66
|
+
|
67
|
+
Full documentation on all the various other obscurities in the ruby (version 2.x) regexp parser can be found [here](https://raw.githubusercontent.com/k-takata/Onigmo/master/doc/RE).
|
47
68
|
|
48
69
|
Using any of the following will raise a RegexpExamples::UnsupportedSyntax exception (until such time as they are implemented!):
|
49
70
|
|
@@ -64,7 +85,6 @@ Using any of the following will raise a RegexpExamples::IllegalSyntax exception:
|
|
64
85
|
|
65
86
|
(Note: Backreferences are not really "regular" either, but I got these to work with a bit of hackery!)
|
66
87
|
|
67
|
-
<a name="configuration_options"/>
|
68
88
|
##Configuration Options
|
69
89
|
|
70
90
|
When generating examples, the gem uses 2 configurable values to limit how many examples are listed:
|
@@ -89,7 +109,7 @@ To use an alternative value, simply pass the configuration option as follows:
|
|
89
109
|
/[F-X]/.examples(max_group_results: 10) #=> ['F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O']
|
90
110
|
```
|
91
111
|
|
92
|
-
**
|
112
|
+
_**WARNING**: Choosing huge numbers, along with a "complex" regex, could easily cause your system to freeze!_
|
93
113
|
|
94
114
|
For example, if you try to generate a list of _all_ 5-letter words: `/\w{5}/.examples(max_group_results: 999)`, then since there are actually `63` "word" characters (upper/lower case letters, numbers and "\_"), this will try to generate `63**5 #=> 992436543` (almost 1 _trillion_) examples!
|
95
115
|
|
@@ -101,14 +121,6 @@ A more sensible use case might be, for example, to generate one random 1-4 digit
|
|
101
121
|
|
102
122
|
(Note: I may develop a much more efficient way to "generate one example" in a later release of this gem.)
|
103
123
|
|
104
|
-
## Known Bugs
|
105
|
-
|
106
|
-
There are a few obscure bugs that have yet to be resolved:
|
107
|
-
|
108
|
-
* Various (weird!) legal patterns do not get parsed correctly, such as `/[[wtf]]/.examples` - To solve this, I'll probably have to dig deep into the Ruby source code and imitate the actual Regex parser more closely.
|
109
|
-
|
110
|
-
* Backreferences are replaced by the _first_ occurance of the group, not the _last_ (as it should be). This is quite a rare occurance, but for example: `/(a|b){2} \1/.examples` incorrectly includes: `"ba b"` rather than the correct: `"ba a"`
|
111
|
-
|
112
124
|
## Installation
|
113
125
|
|
114
126
|
Add this line to your application's Gemfile:
|
data/coverage/.gitignore
ADDED
data/coverage/coverage-badge.png
CHANGED
Binary file
|
data/lib/regexp-examples.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
Dir[File.dirname(__FILE__) + '/regexp-examples
|
1
|
+
Dir[File.dirname(__FILE__) + '/regexp-examples/**/*.rb'].each {|file| require file }
|
2
2
|
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module CoreExtensions
|
2
|
+
module Regexp
|
3
|
+
module Examples
|
4
|
+
def examples(options={})
|
5
|
+
full_examples = RegexpExamples.map_results(
|
6
|
+
RegexpExamples::Parser.new(source, options).parse
|
7
|
+
)
|
8
|
+
RegexpExamples::BackReferenceReplacer.new.substitute_backreferences(full_examples)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# Regexp#include is private for ruby 2.0 and below
|
15
|
+
Regexp.send(:include, CoreExtensions::Regexp::Examples)
|
16
|
+
|
@@ -28,8 +28,7 @@ module RegexpExamples
|
|
28
28
|
private
|
29
29
|
|
30
30
|
def parse_group(repeaters)
|
31
|
-
|
32
|
-
case char
|
31
|
+
case next_char
|
33
32
|
when '('
|
34
33
|
group = parse_multi_group
|
35
34
|
when ')'
|
@@ -55,7 +54,7 @@ module RegexpExamples
|
|
55
54
|
raise IllegalSyntaxError, "Anchors cannot be supported, as they are not regular"
|
56
55
|
end
|
57
56
|
else
|
58
|
-
group = parse_single_char_group(
|
57
|
+
group = parse_single_char_group(next_char)
|
59
58
|
end
|
60
59
|
group
|
61
60
|
end
|
@@ -69,11 +68,11 @@ module RegexpExamples
|
|
69
68
|
when rest_of_string =~ /\Ak<([^>]+)>/ # Named capture group
|
70
69
|
@current_position += ($1.length + 2)
|
71
70
|
group = parse_backreference_group($1)
|
72
|
-
when BackslashCharMap.keys.include?(
|
71
|
+
when BackslashCharMap.keys.include?(next_char)
|
73
72
|
group = CharGroup.new(
|
74
73
|
# Note: The `.dup` is important, as it prevents modifying the constant, in
|
75
74
|
# CharGroup#init_ranges (where the '-' is moved to the front)
|
76
|
-
BackslashCharMap[
|
75
|
+
BackslashCharMap[next_char].dup
|
77
76
|
)
|
78
77
|
when rest_of_string =~ /\A(c|C-)(.)/ # Control character
|
79
78
|
@current_position += $1.length
|
@@ -106,14 +105,13 @@ module RegexpExamples
|
|
106
105
|
raise IllegalSyntaxError, "Anchors cannot be supported, as they are not regular"
|
107
106
|
end
|
108
107
|
else
|
109
|
-
group = parse_single_char_group(
|
108
|
+
group = parse_single_char_group( next_char )
|
110
109
|
end
|
111
110
|
group
|
112
111
|
end
|
113
112
|
|
114
113
|
def parse_repeater(group)
|
115
|
-
|
116
|
-
case char
|
114
|
+
case next_char
|
117
115
|
when '*'
|
118
116
|
repeater = parse_star_repeater(group)
|
119
117
|
when '+'
|
@@ -162,19 +160,19 @@ module RegexpExamples
|
|
162
160
|
end
|
163
161
|
chars = []
|
164
162
|
@current_position += 1
|
165
|
-
if
|
163
|
+
if next_char == ']'
|
166
164
|
# Beware of the sneaky edge case:
|
167
165
|
# /[]]/ (match "]")
|
168
166
|
chars << ']'
|
169
167
|
@current_position += 1
|
170
168
|
end
|
171
|
-
until
|
169
|
+
until next_char == ']' \
|
172
170
|
&& !regexp_string[0..@current_position-1].match(/[^\\](\\{2})*\\\z/)
|
173
171
|
# Beware of having an ODD number of "\" before the "]", e.g.
|
174
172
|
# /[\]]/ (match "]")
|
175
173
|
# /[\\]/ (match "\")
|
176
174
|
# /[\\\]]/ (match "\" or "]")
|
177
|
-
chars <<
|
175
|
+
chars << next_char
|
178
176
|
@current_position += 1
|
179
177
|
end
|
180
178
|
CharGroup.new(chars)
|
@@ -214,14 +212,24 @@ module RegexpExamples
|
|
214
212
|
|
215
213
|
def parse_star_repeater(group)
|
216
214
|
@current_position += 1
|
215
|
+
parse_non_greedy_repeater
|
217
216
|
StarRepeater.new(group)
|
218
217
|
end
|
219
218
|
|
220
219
|
def parse_plus_repeater(group)
|
221
220
|
@current_position += 1
|
221
|
+
parse_non_greedy_repeater
|
222
222
|
PlusRepeater.new(group)
|
223
223
|
end
|
224
224
|
|
225
|
+
def parse_non_greedy_repeater
|
226
|
+
if next_char == '?'
|
227
|
+
# TODO: Delay this warning until after parsing, and only display if capture groups are used
|
228
|
+
warn "Warning: Non-greedy operators (*? and +?) might not work properly, when using capture groups"
|
229
|
+
@current_position += 1
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
225
233
|
def parse_question_mark_repeater(group)
|
226
234
|
@current_position += 1
|
227
235
|
QuestionMarkRepeater.new(group)
|
@@ -243,6 +251,10 @@ module RegexpExamples
|
|
243
251
|
def rest_of_string
|
244
252
|
regexp_string[@current_position..-1]
|
245
253
|
end
|
254
|
+
|
255
|
+
def next_char
|
256
|
+
regexp_string[@current_position]
|
257
|
+
end
|
246
258
|
end
|
247
259
|
end
|
248
260
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: regexp-examples
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Lord
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -51,43 +51,16 @@ files:
|
|
51
51
|
- LICENSE.txt
|
52
52
|
- README.md
|
53
53
|
- Rakefile
|
54
|
-
- coverage/.
|
55
|
-
- coverage/.resultset.json
|
56
|
-
- coverage/.resultset.json.lock
|
57
|
-
- coverage/assets/0.8.0/application.css
|
58
|
-
- coverage/assets/0.8.0/application.js
|
59
|
-
- coverage/assets/0.8.0/colorbox/border.png
|
60
|
-
- coverage/assets/0.8.0/colorbox/controls.png
|
61
|
-
- coverage/assets/0.8.0/colorbox/loading.gif
|
62
|
-
- coverage/assets/0.8.0/colorbox/loading_background.png
|
63
|
-
- coverage/assets/0.8.0/favicon_green.png
|
64
|
-
- coverage/assets/0.8.0/favicon_red.png
|
65
|
-
- coverage/assets/0.8.0/favicon_yellow.png
|
66
|
-
- coverage/assets/0.8.0/loading.gif
|
67
|
-
- coverage/assets/0.8.0/magnify.png
|
68
|
-
- coverage/assets/0.8.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
|
69
|
-
- coverage/assets/0.8.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
|
70
|
-
- coverage/assets/0.8.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
|
71
|
-
- coverage/assets/0.8.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
|
72
|
-
- coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png
|
73
|
-
- coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
|
74
|
-
- coverage/assets/0.8.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
|
75
|
-
- coverage/assets/0.8.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
|
76
|
-
- coverage/assets/0.8.0/smoothness/images/ui-icons_222222_256x240.png
|
77
|
-
- coverage/assets/0.8.0/smoothness/images/ui-icons_2e83ff_256x240.png
|
78
|
-
- coverage/assets/0.8.0/smoothness/images/ui-icons_454545_256x240.png
|
79
|
-
- coverage/assets/0.8.0/smoothness/images/ui-icons_888888_256x240.png
|
80
|
-
- coverage/assets/0.8.0/smoothness/images/ui-icons_cd0a0a_256x240.png
|
54
|
+
- coverage/.gitignore
|
81
55
|
- coverage/coverage-badge.png
|
82
|
-
- coverage/index.html
|
83
56
|
- lib/regexp-examples.rb
|
84
57
|
- lib/regexp-examples/backreferences.rb
|
85
58
|
- lib/regexp-examples/constants.rb
|
59
|
+
- lib/regexp-examples/core_extensions/regexp/examples.rb
|
86
60
|
- lib/regexp-examples/exceptions.rb
|
87
61
|
- lib/regexp-examples/groups.rb
|
88
62
|
- lib/regexp-examples/helpers.rb
|
89
63
|
- lib/regexp-examples/parser.rb
|
90
|
-
- lib/regexp-examples/regexp_extensions.rb
|
91
64
|
- lib/regexp-examples/repeaters.rb
|
92
65
|
- lib/regexp-examples/version.rb
|
93
66
|
- regexp-examples.gemspec
|
@@ -113,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
86
|
version: '0'
|
114
87
|
requirements: []
|
115
88
|
rubyforge_project:
|
116
|
-
rubygems_version: 2.
|
89
|
+
rubygems_version: 2.2.2
|
117
90
|
signing_key:
|
118
91
|
specification_version: 4
|
119
92
|
summary: Extends the Regexp class with '#examples'
|
data/coverage/.last_run.json
DELETED
data/coverage/.resultset.json
DELETED
@@ -1,906 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"RSpec": {
|
3
|
-
"coverage": {
|
4
|
-
"/home/tom/git/regexp-examples/lib/regexp-examples.rb": [
|
5
|
-
10,
|
6
|
-
null
|
7
|
-
],
|
8
|
-
"/home/tom/git/regexp-examples/lib/regexp-examples/helpers.rb": [
|
9
|
-
1,
|
10
|
-
null,
|
11
|
-
null,
|
12
|
-
null,
|
13
|
-
null,
|
14
|
-
null,
|
15
|
-
null,
|
16
|
-
null,
|
17
|
-
null,
|
18
|
-
1,
|
19
|
-
813,
|
20
|
-
813,
|
21
|
-
256,
|
22
|
-
350,
|
23
|
-
null,
|
24
|
-
null,
|
25
|
-
null,
|
26
|
-
1,
|
27
|
-
350,
|
28
|
-
350,
|
29
|
-
null,
|
30
|
-
null,
|
31
|
-
350,
|
32
|
-
null,
|
33
|
-
null,
|
34
|
-
1,
|
35
|
-
null,
|
36
|
-
220,
|
37
|
-
117,
|
38
|
-
117,
|
39
|
-
null,
|
40
|
-
null,
|
41
|
-
null,
|
42
|
-
null
|
43
|
-
],
|
44
|
-
"/home/tom/git/regexp-examples/lib/regexp-examples/repeaters.rb": [
|
45
|
-
1,
|
46
|
-
1,
|
47
|
-
1,
|
48
|
-
1,
|
49
|
-
410,
|
50
|
-
null,
|
51
|
-
null,
|
52
|
-
1,
|
53
|
-
369,
|
54
|
-
369,
|
55
|
-
369,
|
56
|
-
414,
|
57
|
-
19,
|
58
|
-
null,
|
59
|
-
null,
|
60
|
-
null,
|
61
|
-
395,
|
62
|
-
null,
|
63
|
-
null,
|
64
|
-
369,
|
65
|
-
null,
|
66
|
-
null,
|
67
|
-
null,
|
68
|
-
1,
|
69
|
-
1,
|
70
|
-
376,
|
71
|
-
null,
|
72
|
-
null,
|
73
|
-
1,
|
74
|
-
335,
|
75
|
-
null,
|
76
|
-
null,
|
77
|
-
null,
|
78
|
-
1,
|
79
|
-
1,
|
80
|
-
5,
|
81
|
-
null,
|
82
|
-
null,
|
83
|
-
1,
|
84
|
-
5,
|
85
|
-
null,
|
86
|
-
null,
|
87
|
-
null,
|
88
|
-
1,
|
89
|
-
1,
|
90
|
-
7,
|
91
|
-
null,
|
92
|
-
null,
|
93
|
-
1,
|
94
|
-
7,
|
95
|
-
null,
|
96
|
-
null,
|
97
|
-
null,
|
98
|
-
1,
|
99
|
-
1,
|
100
|
-
13,
|
101
|
-
null,
|
102
|
-
null,
|
103
|
-
1,
|
104
|
-
13,
|
105
|
-
null,
|
106
|
-
null,
|
107
|
-
null,
|
108
|
-
1,
|
109
|
-
1,
|
110
|
-
9,
|
111
|
-
9,
|
112
|
-
9,
|
113
|
-
null,
|
114
|
-
3,
|
115
|
-
6,
|
116
|
-
1,
|
117
|
-
null,
|
118
|
-
5,
|
119
|
-
null,
|
120
|
-
null,
|
121
|
-
null,
|
122
|
-
1,
|
123
|
-
9,
|
124
|
-
null,
|
125
|
-
null,
|
126
|
-
1,
|
127
|
-
1,
|
128
|
-
3,
|
129
|
-
null,
|
130
|
-
null,
|
131
|
-
null,
|
132
|
-
null
|
133
|
-
],
|
134
|
-
"/home/tom/git/regexp-examples/lib/regexp-examples/backreferences.rb": [
|
135
|
-
1,
|
136
|
-
1,
|
137
|
-
1,
|
138
|
-
null,
|
139
|
-
215,
|
140
|
-
215,
|
141
|
-
32,
|
142
|
-
null,
|
143
|
-
213,
|
144
|
-
null,
|
145
|
-
null,
|
146
|
-
null,
|
147
|
-
2,
|
148
|
-
null,
|
149
|
-
95,
|
150
|
-
null,
|
151
|
-
null,
|
152
|
-
1,
|
153
|
-
1,
|
154
|
-
null,
|
155
|
-
80,
|
156
|
-
32,
|
157
|
-
null,
|
158
|
-
null,
|
159
|
-
null,
|
160
|
-
null,
|
161
|
-
null
|
162
|
-
],
|
163
|
-
"/home/tom/git/regexp-examples/lib/regexp-examples/exceptions.rb": [
|
164
|
-
1,
|
165
|
-
1,
|
166
|
-
1,
|
167
|
-
1,
|
168
|
-
1,
|
169
|
-
null
|
170
|
-
],
|
171
|
-
"/home/tom/git/regexp-examples/lib/regexp-examples/constants.rb": [
|
172
|
-
1,
|
173
|
-
1,
|
174
|
-
null,
|
175
|
-
null,
|
176
|
-
null,
|
177
|
-
null,
|
178
|
-
null,
|
179
|
-
null,
|
180
|
-
null,
|
181
|
-
1,
|
182
|
-
null,
|
183
|
-
null,
|
184
|
-
null,
|
185
|
-
null,
|
186
|
-
null,
|
187
|
-
1,
|
188
|
-
null,
|
189
|
-
1,
|
190
|
-
1,
|
191
|
-
1,
|
192
|
-
112,
|
193
|
-
112,
|
194
|
-
null,
|
195
|
-
null,
|
196
|
-
null,
|
197
|
-
null,
|
198
|
-
1,
|
199
|
-
16,
|
200
|
-
null,
|
201
|
-
1,
|
202
|
-
369,
|
203
|
-
null,
|
204
|
-
null,
|
205
|
-
1,
|
206
|
-
1,
|
207
|
-
1,
|
208
|
-
1,
|
209
|
-
37,
|
210
|
-
1,
|
211
|
-
1,
|
212
|
-
1,
|
213
|
-
null,
|
214
|
-
null,
|
215
|
-
null,
|
216
|
-
1,
|
217
|
-
null,
|
218
|
-
null,
|
219
|
-
null,
|
220
|
-
32,
|
221
|
-
null,
|
222
|
-
null,
|
223
|
-
null,
|
224
|
-
null,
|
225
|
-
null,
|
226
|
-
null,
|
227
|
-
null,
|
228
|
-
null,
|
229
|
-
null,
|
230
|
-
null,
|
231
|
-
null,
|
232
|
-
null,
|
233
|
-
null,
|
234
|
-
null,
|
235
|
-
null
|
236
|
-
],
|
237
|
-
"/home/tom/git/regexp-examples/lib/regexp-examples/parser.rb": [
|
238
|
-
1,
|
239
|
-
1,
|
240
|
-
1,
|
241
|
-
1,
|
242
|
-
112,
|
243
|
-
112,
|
244
|
-
112,
|
245
|
-
112,
|
246
|
-
null,
|
247
|
-
null,
|
248
|
-
null,
|
249
|
-
null,
|
250
|
-
null,
|
251
|
-
1,
|
252
|
-
169,
|
253
|
-
169,
|
254
|
-
473,
|
255
|
-
455,
|
256
|
-
410,
|
257
|
-
11,
|
258
|
-
null,
|
259
|
-
399,
|
260
|
-
399,
|
261
|
-
null,
|
262
|
-
140,
|
263
|
-
null,
|
264
|
-
null,
|
265
|
-
1,
|
266
|
-
null,
|
267
|
-
1,
|
268
|
-
473,
|
269
|
-
473,
|
270
|
-
null,
|
271
|
-
50,
|
272
|
-
null,
|
273
|
-
45,
|
274
|
-
null,
|
275
|
-
27,
|
276
|
-
null,
|
277
|
-
4,
|
278
|
-
null,
|
279
|
-
11,
|
280
|
-
null,
|
281
|
-
66,
|
282
|
-
null,
|
283
|
-
2,
|
284
|
-
1,
|
285
|
-
null,
|
286
|
-
1,
|
287
|
-
null,
|
288
|
-
null,
|
289
|
-
2,
|
290
|
-
1,
|
291
|
-
null,
|
292
|
-
1,
|
293
|
-
null,
|
294
|
-
null,
|
295
|
-
266,
|
296
|
-
null,
|
297
|
-
455,
|
298
|
-
null,
|
299
|
-
null,
|
300
|
-
1,
|
301
|
-
66,
|
302
|
-
null,
|
303
|
-
null,
|
304
|
-
21,
|
305
|
-
21,
|
306
|
-
null,
|
307
|
-
1,
|
308
|
-
1,
|
309
|
-
null,
|
310
|
-
15,
|
311
|
-
null,
|
312
|
-
null,
|
313
|
-
null,
|
314
|
-
null,
|
315
|
-
null,
|
316
|
-
8,
|
317
|
-
8,
|
318
|
-
null,
|
319
|
-
3,
|
320
|
-
3,
|
321
|
-
null,
|
322
|
-
3,
|
323
|
-
3,
|
324
|
-
3,
|
325
|
-
null,
|
326
|
-
3,
|
327
|
-
3,
|
328
|
-
null,
|
329
|
-
null,
|
330
|
-
1,
|
331
|
-
null,
|
332
|
-
3,
|
333
|
-
null,
|
334
|
-
2,
|
335
|
-
1,
|
336
|
-
null,
|
337
|
-
1,
|
338
|
-
null,
|
339
|
-
null,
|
340
|
-
4,
|
341
|
-
2,
|
342
|
-
null,
|
343
|
-
2,
|
344
|
-
null,
|
345
|
-
null,
|
346
|
-
2,
|
347
|
-
66,
|
348
|
-
56,
|
349
|
-
null,
|
350
|
-
null,
|
351
|
-
1,
|
352
|
-
399,
|
353
|
-
399,
|
354
|
-
null,
|
355
|
-
5,
|
356
|
-
null,
|
357
|
-
7,
|
358
|
-
null,
|
359
|
-
13,
|
360
|
-
null,
|
361
|
-
9,
|
362
|
-
null,
|
363
|
-
365,
|
364
|
-
null,
|
365
|
-
399,
|
366
|
-
null,
|
367
|
-
null,
|
368
|
-
1,
|
369
|
-
50,
|
370
|
-
50,
|
371
|
-
50,
|
372
|
-
50,
|
373
|
-
null,
|
374
|
-
null,
|
375
|
-
42,
|
376
|
-
null,
|
377
|
-
1,
|
378
|
-
1,
|
379
|
-
null,
|
380
|
-
2,
|
381
|
-
null,
|
382
|
-
2,
|
383
|
-
null,
|
384
|
-
3,
|
385
|
-
3,
|
386
|
-
50,
|
387
|
-
null,
|
388
|
-
46,
|
389
|
-
45,
|
390
|
-
null,
|
391
|
-
null,
|
392
|
-
1,
|
393
|
-
45,
|
394
|
-
null,
|
395
|
-
null,
|
396
|
-
1,
|
397
|
-
27,
|
398
|
-
1,
|
399
|
-
null,
|
400
|
-
26,
|
401
|
-
26,
|
402
|
-
26,
|
403
|
-
null,
|
404
|
-
null,
|
405
|
-
1,
|
406
|
-
1,
|
407
|
-
null,
|
408
|
-
null,
|
409
|
-
26,
|
410
|
-
null,
|
411
|
-
null,
|
412
|
-
null,
|
413
|
-
null,
|
414
|
-
102,
|
415
|
-
102,
|
416
|
-
null,
|
417
|
-
26,
|
418
|
-
null,
|
419
|
-
null,
|
420
|
-
1,
|
421
|
-
4,
|
422
|
-
null,
|
423
|
-
null,
|
424
|
-
1,
|
425
|
-
11,
|
426
|
-
11,
|
427
|
-
11,
|
428
|
-
null,
|
429
|
-
null,
|
430
|
-
null,
|
431
|
-
1,
|
432
|
-
287,
|
433
|
-
null,
|
434
|
-
null,
|
435
|
-
1,
|
436
|
-
22,
|
437
|
-
null,
|
438
|
-
null,
|
439
|
-
1,
|
440
|
-
8,
|
441
|
-
null,
|
442
|
-
null,
|
443
|
-
null,
|
444
|
-
1,
|
445
|
-
3,
|
446
|
-
null,
|
447
|
-
null,
|
448
|
-
1,
|
449
|
-
3,
|
450
|
-
null,
|
451
|
-
null,
|
452
|
-
1,
|
453
|
-
5,
|
454
|
-
5,
|
455
|
-
null,
|
456
|
-
null,
|
457
|
-
1,
|
458
|
-
7,
|
459
|
-
7,
|
460
|
-
null,
|
461
|
-
null,
|
462
|
-
1,
|
463
|
-
13,
|
464
|
-
13,
|
465
|
-
null,
|
466
|
-
null,
|
467
|
-
1,
|
468
|
-
9,
|
469
|
-
9,
|
470
|
-
9,
|
471
|
-
9,
|
472
|
-
9,
|
473
|
-
9,
|
474
|
-
null,
|
475
|
-
null,
|
476
|
-
1,
|
477
|
-
365,
|
478
|
-
null,
|
479
|
-
null,
|
480
|
-
1,
|
481
|
-
317,
|
482
|
-
null,
|
483
|
-
null,
|
484
|
-
null,
|
485
|
-
null
|
486
|
-
],
|
487
|
-
"/home/tom/git/regexp-examples/lib/regexp-examples/groups.rb": [
|
488
|
-
1,
|
489
|
-
null,
|
490
|
-
null,
|
491
|
-
null,
|
492
|
-
1,
|
493
|
-
1,
|
494
|
-
1,
|
495
|
-
1491,
|
496
|
-
1491,
|
497
|
-
1491,
|
498
|
-
155,
|
499
|
-
null,
|
500
|
-
1491,
|
501
|
-
null,
|
502
|
-
null,
|
503
|
-
1,
|
504
|
-
2213,
|
505
|
-
null,
|
506
|
-
null,
|
507
|
-
null,
|
508
|
-
1,
|
509
|
-
1,
|
510
|
-
287,
|
511
|
-
null,
|
512
|
-
1,
|
513
|
-
249,
|
514
|
-
null,
|
515
|
-
null,
|
516
|
-
null,
|
517
|
-
1,
|
518
|
-
1,
|
519
|
-
41,
|
520
|
-
41,
|
521
|
-
10,
|
522
|
-
10,
|
523
|
-
null,
|
524
|
-
31,
|
525
|
-
null,
|
526
|
-
null,
|
527
|
-
41,
|
528
|
-
41,
|
529
|
-
null,
|
530
|
-
null,
|
531
|
-
1,
|
532
|
-
null,
|
533
|
-
41,
|
534
|
-
41,
|
535
|
-
41,
|
536
|
-
41,
|
537
|
-
null,
|
538
|
-
41,
|
539
|
-
null,
|
540
|
-
null,
|
541
|
-
25,
|
542
|
-
14,
|
543
|
-
14,
|
544
|
-
null,
|
545
|
-
11,
|
546
|
-
null,
|
547
|
-
null,
|
548
|
-
null,
|
549
|
-
41,
|
550
|
-
41,
|
551
|
-
null,
|
552
|
-
null,
|
553
|
-
1,
|
554
|
-
41,
|
555
|
-
1348,
|
556
|
-
30,
|
557
|
-
20,
|
558
|
-
null,
|
559
|
-
1,
|
560
|
-
null,
|
561
|
-
2,
|
562
|
-
null,
|
563
|
-
7,
|
564
|
-
null,
|
565
|
-
null,
|
566
|
-
null,
|
567
|
-
null,
|
568
|
-
null,
|
569
|
-
1,
|
570
|
-
41,
|
571
|
-
602,
|
572
|
-
null,
|
573
|
-
null,
|
574
|
-
null,
|
575
|
-
1,
|
576
|
-
1,
|
577
|
-
534,
|
578
|
-
9,
|
579
|
-
null,
|
580
|
-
20,
|
581
|
-
null,
|
582
|
-
null,
|
583
|
-
null,
|
584
|
-
1,
|
585
|
-
1,
|
586
|
-
1,
|
587
|
-
94,
|
588
|
-
null,
|
589
|
-
null,
|
590
|
-
null,
|
591
|
-
null,
|
592
|
-
1,
|
593
|
-
1,
|
594
|
-
1,
|
595
|
-
45,
|
596
|
-
45,
|
597
|
-
null,
|
598
|
-
null,
|
599
|
-
null,
|
600
|
-
null,
|
601
|
-
null,
|
602
|
-
1,
|
603
|
-
194,
|
604
|
-
45,
|
605
|
-
119,
|
606
|
-
null,
|
607
|
-
null,
|
608
|
-
null,
|
609
|
-
null,
|
610
|
-
1,
|
611
|
-
null,
|
612
|
-
null,
|
613
|
-
1,
|
614
|
-
1,
|
615
|
-
11,
|
616
|
-
11,
|
617
|
-
null,
|
618
|
-
null,
|
619
|
-
null,
|
620
|
-
1,
|
621
|
-
11,
|
622
|
-
11,
|
623
|
-
11,
|
624
|
-
36,
|
625
|
-
null,
|
626
|
-
null,
|
627
|
-
null,
|
628
|
-
null,
|
629
|
-
1,
|
630
|
-
1,
|
631
|
-
1,
|
632
|
-
22,
|
633
|
-
null,
|
634
|
-
null,
|
635
|
-
1,
|
636
|
-
22,
|
637
|
-
null,
|
638
|
-
null,
|
639
|
-
null,
|
640
|
-
null
|
641
|
-
],
|
642
|
-
"/home/tom/git/regexp-examples/lib/regexp-examples/regexp_extensions.rb": [
|
643
|
-
1,
|
644
|
-
1,
|
645
|
-
1,
|
646
|
-
112,
|
647
|
-
null,
|
648
|
-
null,
|
649
|
-
95,
|
650
|
-
null,
|
651
|
-
null,
|
652
|
-
1,
|
653
|
-
null,
|
654
|
-
null
|
655
|
-
],
|
656
|
-
"/home/tom/git/regexp-examples/spec/regexp-examples_spec.rb": [
|
657
|
-
1,
|
658
|
-
1,
|
659
|
-
11,
|
660
|
-
80,
|
661
|
-
80,
|
662
|
-
80,
|
663
|
-
263,
|
664
|
-
null,
|
665
|
-
null,
|
666
|
-
null,
|
667
|
-
null,
|
668
|
-
null,
|
669
|
-
null,
|
670
|
-
null,
|
671
|
-
null,
|
672
|
-
1,
|
673
|
-
1,
|
674
|
-
12,
|
675
|
-
24,
|
676
|
-
null,
|
677
|
-
null,
|
678
|
-
null,
|
679
|
-
null,
|
680
|
-
1,
|
681
|
-
1,
|
682
|
-
5,
|
683
|
-
10,
|
684
|
-
null,
|
685
|
-
null,
|
686
|
-
null,
|
687
|
-
null,
|
688
|
-
1,
|
689
|
-
1,
|
690
|
-
9,
|
691
|
-
9,
|
692
|
-
null,
|
693
|
-
null,
|
694
|
-
null,
|
695
|
-
null,
|
696
|
-
1,
|
697
|
-
1,
|
698
|
-
1,
|
699
|
-
null,
|
700
|
-
null,
|
701
|
-
null,
|
702
|
-
null,
|
703
|
-
null,
|
704
|
-
null,
|
705
|
-
null,
|
706
|
-
null,
|
707
|
-
null,
|
708
|
-
null,
|
709
|
-
null,
|
710
|
-
1,
|
711
|
-
1,
|
712
|
-
null,
|
713
|
-
null,
|
714
|
-
null,
|
715
|
-
null,
|
716
|
-
null,
|
717
|
-
null,
|
718
|
-
null,
|
719
|
-
1,
|
720
|
-
1,
|
721
|
-
null,
|
722
|
-
null,
|
723
|
-
null,
|
724
|
-
null,
|
725
|
-
null,
|
726
|
-
null,
|
727
|
-
null,
|
728
|
-
null,
|
729
|
-
null,
|
730
|
-
null,
|
731
|
-
null,
|
732
|
-
null,
|
733
|
-
null,
|
734
|
-
null,
|
735
|
-
null,
|
736
|
-
null,
|
737
|
-
null,
|
738
|
-
1,
|
739
|
-
1,
|
740
|
-
null,
|
741
|
-
null,
|
742
|
-
null,
|
743
|
-
null,
|
744
|
-
null,
|
745
|
-
null,
|
746
|
-
null,
|
747
|
-
1,
|
748
|
-
1,
|
749
|
-
null,
|
750
|
-
null,
|
751
|
-
null,
|
752
|
-
null,
|
753
|
-
null,
|
754
|
-
null,
|
755
|
-
null,
|
756
|
-
null,
|
757
|
-
null,
|
758
|
-
null,
|
759
|
-
null,
|
760
|
-
null,
|
761
|
-
null,
|
762
|
-
null,
|
763
|
-
null,
|
764
|
-
null,
|
765
|
-
null,
|
766
|
-
null,
|
767
|
-
1,
|
768
|
-
1,
|
769
|
-
null,
|
770
|
-
null,
|
771
|
-
null,
|
772
|
-
null,
|
773
|
-
null,
|
774
|
-
null,
|
775
|
-
null,
|
776
|
-
null,
|
777
|
-
null,
|
778
|
-
null,
|
779
|
-
null,
|
780
|
-
1,
|
781
|
-
null,
|
782
|
-
1,
|
783
|
-
null,
|
784
|
-
null,
|
785
|
-
null,
|
786
|
-
null,
|
787
|
-
null,
|
788
|
-
null,
|
789
|
-
null,
|
790
|
-
null,
|
791
|
-
null,
|
792
|
-
null,
|
793
|
-
null,
|
794
|
-
1,
|
795
|
-
1,
|
796
|
-
null,
|
797
|
-
null,
|
798
|
-
null,
|
799
|
-
null,
|
800
|
-
null,
|
801
|
-
null,
|
802
|
-
null,
|
803
|
-
null,
|
804
|
-
null,
|
805
|
-
null,
|
806
|
-
null,
|
807
|
-
null,
|
808
|
-
null,
|
809
|
-
null,
|
810
|
-
null,
|
811
|
-
1,
|
812
|
-
1,
|
813
|
-
null,
|
814
|
-
null,
|
815
|
-
null,
|
816
|
-
null,
|
817
|
-
null,
|
818
|
-
null,
|
819
|
-
null,
|
820
|
-
null,
|
821
|
-
1,
|
822
|
-
1,
|
823
|
-
null,
|
824
|
-
null,
|
825
|
-
null,
|
826
|
-
null,
|
827
|
-
null,
|
828
|
-
null,
|
829
|
-
null,
|
830
|
-
null,
|
831
|
-
1,
|
832
|
-
1,
|
833
|
-
null,
|
834
|
-
null,
|
835
|
-
null,
|
836
|
-
null,
|
837
|
-
null,
|
838
|
-
null,
|
839
|
-
null,
|
840
|
-
null,
|
841
|
-
null,
|
842
|
-
null,
|
843
|
-
null,
|
844
|
-
1,
|
845
|
-
1,
|
846
|
-
null,
|
847
|
-
null,
|
848
|
-
null,
|
849
|
-
null,
|
850
|
-
null,
|
851
|
-
null,
|
852
|
-
null,
|
853
|
-
1,
|
854
|
-
1,
|
855
|
-
null,
|
856
|
-
null,
|
857
|
-
null,
|
858
|
-
null,
|
859
|
-
null,
|
860
|
-
null,
|
861
|
-
1,
|
862
|
-
1,
|
863
|
-
null,
|
864
|
-
null,
|
865
|
-
null,
|
866
|
-
null,
|
867
|
-
null,
|
868
|
-
null,
|
869
|
-
null,
|
870
|
-
null,
|
871
|
-
null,
|
872
|
-
null,
|
873
|
-
null,
|
874
|
-
null,
|
875
|
-
1,
|
876
|
-
null,
|
877
|
-
1,
|
878
|
-
2,
|
879
|
-
2,
|
880
|
-
2,
|
881
|
-
null,
|
882
|
-
1,
|
883
|
-
1,
|
884
|
-
1,
|
885
|
-
null,
|
886
|
-
null,
|
887
|
-
1,
|
888
|
-
1,
|
889
|
-
null,
|
890
|
-
null,
|
891
|
-
null,
|
892
|
-
1,
|
893
|
-
1,
|
894
|
-
1,
|
895
|
-
null,
|
896
|
-
null,
|
897
|
-
null,
|
898
|
-
null,
|
899
|
-
null,
|
900
|
-
null,
|
901
|
-
null
|
902
|
-
]
|
903
|
-
},
|
904
|
-
"timestamp": 1422185398
|
905
|
-
}
|
906
|
-
}
|