list_matcher 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -1
- data/lib/list_matcher.rb +23 -3
- data/lib/list_matcher/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb59b6999ba70e7b3548710341764da658e460b3
|
4
|
+
data.tar.gz: d0781937d67e22497b6c0005497c4e734a39582a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e564cd5377d7018748417535b90f4fcd6347ed129ab8739590a038c8109039e1fd53b8f66ea740331cae0a2dbf48d9d55142c21f6c105106a496ff28e55f5b8
|
7
|
+
data.tar.gz: 5357e73c0623e503befdf927d26c11d052105368f7ad12b9325c8e0b9eb192c4430c9e1aee920a6442e58862e94a54040e02cabdd454938b39fa5cecea40688e
|
data/README.md
CHANGED
@@ -116,7 +116,7 @@ List::Matcher.pattern %w( cat dog ), backtracking: false # "(?>cat|dog)"
|
|
116
116
|
default: false
|
117
117
|
```
|
118
118
|
|
119
|
-
Whether boundary expressions should be attached to the margins of every expression in the list. If this value is simply true, this means
|
119
|
+
Whether boundary expressions should be attached to the margins of every expression in the list (but see note below). If this value is simply true, this means
|
120
120
|
each item's marginal characters, the first and the last, are tested to see whether they are word characters and if so the word
|
121
121
|
boundary symbol, `\b`, is appended to them where appropriate. There are several variants on this, however:
|
122
122
|
|
@@ -163,6 +163,9 @@ List::Matcher.pattern (1...1000).to_a, bound: { test: /\d/, left: '(?<!\d)', rig
|
|
163
163
|
# "(?:(?<!\\d)[1-9](?:\\d\\d?)?(?!\\d))"
|
164
164
|
```
|
165
165
|
|
166
|
+
**NOTE** Because boundary tests cannot be applied to symbols, the bound option will give you strange results if you use it
|
167
|
+
with a list any of whose items have a symbol at their leading or trailing margin.
|
168
|
+
|
166
169
|
### strip
|
167
170
|
|
168
171
|
```ruby
|
data/lib/list_matcher.rb
CHANGED
@@ -186,14 +186,14 @@ module List
|
|
186
186
|
end
|
187
187
|
c1 = tree c[0], symbols
|
188
188
|
c2 = tree c[1], symbols
|
189
|
-
c2
|
189
|
+
c2 = c2.optionalize optional
|
190
190
|
Sequence.new self, c1, c2
|
191
191
|
elsif c = best_suffix(list) # found a fixed-width suffix pattern
|
192
192
|
if optional = c[0].include?('')
|
193
|
-
c[0].reject!{ |w| w == '' }
|
193
|
+
c[0].reject!{ |w| w == '' } # TODO make this faster with index
|
194
194
|
end
|
195
195
|
c1 = tree c[0], symbols
|
196
|
-
c1
|
196
|
+
c1 = c1.optionalize optional
|
197
197
|
c2 = tree c[1], symbols
|
198
198
|
Sequence.new self, c1, c2
|
199
199
|
else
|
@@ -476,6 +476,13 @@ module List
|
|
476
476
|
engine.quote s
|
477
477
|
end
|
478
478
|
|
479
|
+
def optionalize(bool)
|
480
|
+
if bool
|
481
|
+
self.optional = bool
|
482
|
+
end
|
483
|
+
self
|
484
|
+
end
|
485
|
+
|
479
486
|
end
|
480
487
|
|
481
488
|
class SpecialPattern < Node
|
@@ -490,6 +497,10 @@ module List
|
|
490
497
|
@right = !!word_right
|
491
498
|
end
|
492
499
|
|
500
|
+
def dup
|
501
|
+
self.class.new engine, char, var, pat, atomic: atomic?, word_left: left?, word_right: right?
|
502
|
+
end
|
503
|
+
|
493
504
|
def left?
|
494
505
|
@left
|
495
506
|
end
|
@@ -510,6 +521,15 @@ module List
|
|
510
521
|
rx = @pat
|
511
522
|
finalize rx
|
512
523
|
end
|
524
|
+
|
525
|
+
def optionalize(bool)
|
526
|
+
n = self
|
527
|
+
if bool
|
528
|
+
n = n.dup
|
529
|
+
n.optional = bool
|
530
|
+
end
|
531
|
+
n
|
532
|
+
end
|
513
533
|
end
|
514
534
|
|
515
535
|
class Sequence < Node
|
data/lib/list_matcher/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: list_matcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dfhoughton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|