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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +25 -13
  3. data/coverage/.gitignore +4 -0
  4. data/coverage/coverage-badge.png +0 -0
  5. data/lib/regexp-examples.rb +1 -1
  6. data/lib/regexp-examples/core_extensions/regexp/examples.rb +16 -0
  7. data/lib/regexp-examples/parser.rb +23 -11
  8. data/lib/regexp-examples/version.rb +1 -1
  9. data/spec/regexp-examples_spec.rb +2 -0
  10. metadata +5 -32
  11. data/coverage/.last_run.json +0 -5
  12. data/coverage/.resultset.json +0 -906
  13. data/coverage/.resultset.json.lock +0 -0
  14. data/coverage/assets/0.8.0/application.css +0 -799
  15. data/coverage/assets/0.8.0/application.js +0 -1559
  16. data/coverage/assets/0.8.0/colorbox/border.png +0 -0
  17. data/coverage/assets/0.8.0/colorbox/controls.png +0 -0
  18. data/coverage/assets/0.8.0/colorbox/loading.gif +0 -0
  19. data/coverage/assets/0.8.0/colorbox/loading_background.png +0 -0
  20. data/coverage/assets/0.8.0/favicon_green.png +0 -0
  21. data/coverage/assets/0.8.0/favicon_red.png +0 -0
  22. data/coverage/assets/0.8.0/favicon_yellow.png +0 -0
  23. data/coverage/assets/0.8.0/loading.gif +0 -0
  24. data/coverage/assets/0.8.0/magnify.png +0 -0
  25. data/coverage/assets/0.8.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  26. data/coverage/assets/0.8.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  27. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  28. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  29. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  30. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  31. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  32. data/coverage/assets/0.8.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  33. data/coverage/assets/0.8.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
  34. data/coverage/assets/0.8.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  35. data/coverage/assets/0.8.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
  36. data/coverage/assets/0.8.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
  37. data/coverage/assets/0.8.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  38. data/coverage/index.html +0 -5626
  39. data/lib/regexp-examples/regexp_extensions.rb +0 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9df53956931ca38a9bdcd9f7da1318a80922bfee
4
- data.tar.gz: f884ae6fe38349486eb86f15ffb63eca6febb5ef
3
+ metadata.gz: e6b6bd1d3602690963b1f1ecb61dbb91b38d0847
4
+ data.tar.gz: c104bcd97175689467336fa4c11f4f187d483332
5
5
  SHA512:
6
- metadata.gz: 5ec27e327cc331647dcfabe9f9d9028b96fd43051e3e56dae9d9b200683cbd704c62af78faff19740e7cecd008d47946e7dfc4871c480a24985eae857831dbe9
7
- data.tar.gz: 8e999b7e0d41191d6cc0b3bfbf7069294a1faedb053468c8cf714f0310e2b06f2d7f65b678387d3020c64525a41d98d3e5444628bc3e0cf44ddab779b2763f64
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
- For more detail on this, see [configuration options](#configuration_options).
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
- * Options, e.g. `/pattern/i`, `/foo.*bar/m` - Using options will currently just be ignored, e.g. `/test/i.examples` will NOT include `"TEST"`
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
- **_WARNING_**: Choosing huge numbers, along with a "complex" regex, could easily cause your system to freeze!
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:
@@ -0,0 +1,4 @@
1
+ # Ignore any file in this directory except for this file and coverage-badge.png files
2
+ *
3
+ !/.gitignore
4
+ !coverage-badge.png
Binary file
@@ -1,2 +1,2 @@
1
- Dir[File.dirname(__FILE__) + '/regexp-examples/*.rb'].each {|file| require file }
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
- char = regexp_string[@current_position]
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(char)
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?(regexp_string[@current_position])
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[regexp_string[@current_position]].dup
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( regexp_string[@current_position] )
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
- char = regexp_string[@current_position]
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 regexp_string[@current_position] == ']'
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 regexp_string[@current_position] == ']' \
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 << regexp_string[@current_position]
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
 
@@ -1,3 +1,3 @@
1
1
  module RegexpExamples
2
- VERSION = '0.4.0'
2
+ VERSION = '0.4.1'
3
3
  end
@@ -42,7 +42,9 @@ RSpec.describe Regexp, "#examples" do
42
42
  examples_exist_and_match(
43
43
  /a/,
44
44
  /a*/,
45
+ /a*?/,
45
46
  /a+/,
47
+ /a+?/,
46
48
  /a?/,
47
49
  /a{1}/,
48
50
  /a{1,}/,
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.0
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-01-25 00:00:00.000000000 Z
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/.last_run.json
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.4.5
89
+ rubygems_version: 2.2.2
117
90
  signing_key:
118
91
  specification_version: 4
119
92
  summary: Extends the Regexp class with '#examples'
@@ -1,5 +0,0 @@
1
- {
2
- "result": {
3
- "covered_percent": 100.0
4
- }
5
- }
@@ -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
- }