list_matcher 1.0.6 → 1.0.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 393f3b81be1503c0af7b583119e063ff2c91276a
4
- data.tar.gz: 66a79b3b020f17b9da3fcd6a8465c8b5966088ac
3
+ metadata.gz: 0f79c113982bca292d38166efef13f34dad0e94c
4
+ data.tar.gz: 57d959f68c59bcb5e46d845bbc91fc6c886938ea
5
5
  SHA512:
6
- metadata.gz: 23e71cd30a236c5a247d2f6e12c6e9f7bd5f3adb3c1dcf2c4eff781561ed7ec1bb123a720e9161dc6dba7d597c315c0bdac403663a0bb68b2fb957863cce30ef
7
- data.tar.gz: db2306c5f2cf514961971566446de1de8e746fe157b472f8314c6a82f24063b4d7c1bb0c7ed4e632108ce4ef253c00e1c69c3b74c4e6d5cc64530c2035c4287a
6
+ metadata.gz: 60928c05f29c22d7c35dd185754ac15e00c67241371b63a8ec49623cbbd4f4d56039ccceba89ee7bfabf8fd42d48d61032b6fb04fade09c46e955fc671c5a59d
7
+ data.tar.gz: 5833bb49787f30342f8217fdce788b8ba1e60cae48e4cef83c90346168112c2a3d1ac0581a3261328d9537e06bc7fd0664feff39eda097cd042183b4a74c9072
@@ -1,3 +1,3 @@
1
1
  module ListMatcher
2
- VERSION = "1.0.6"
2
+ VERSION = "1.0.7"
3
3
  end
data/lib/list_matcher.rb CHANGED
@@ -2,7 +2,7 @@ require "list_matcher/version"
2
2
 
3
3
  module List
4
4
  class Matcher
5
- attr_reader :atomic, :backtracking, :bound, :case_insensitive, :strip, :left_bound,
5
+ attr_reader :atomic, :backtracking, :bound, :case_insensitive, :strip, :left_bound,
6
6
  :right_bound, :word_test, :normalize_whitespace, :multiline, :name, :vet, :not_extended
7
7
 
8
8
  # a special exception class for List::Matcher
@@ -137,6 +137,7 @@ module List
137
137
 
138
138
  # converst list into a string representing a regex pattern suitable for inclusion in a larger regex
139
139
  def pattern( list, opts={} )
140
+ return '(?!)' unless list.any?
140
141
  return bud(opts).pattern list unless opts.empty?
141
142
  list = list.compact.map(&:to_s).select{ |s| s.length > 0 }
142
143
  list.map!(&:strip).select!{ |s| s.length > 0 } if strip
@@ -599,16 +600,14 @@ module List
599
600
  dup_count.compact!
600
601
  if dup_count.any?
601
602
  copy = elements.dup
602
- changed = false
603
603
  dup_count.reverse.each do |repeats, seq, start, finish|
604
604
  a = atomy? seq
605
605
  sl = seq.length
606
606
  if ( a ? 0 : engine.wrap_size ) + 2 + repeats.to_s.length + sl < sl * repeats
607
- changed = true
608
607
  copy[start...finish] = ( a ? seq : wrap(seq) ) + "{#{repeats}}"
608
+ return copy;
609
609
  end
610
610
  end
611
- return copy if changed
612
611
  end
613
612
  end
614
613
  end
data/list_matcher.gemspec CHANGED
@@ -21,4 +21,5 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_development_dependency "bundler", "~> 1.7"
23
23
  spec.add_development_dependency "rake", "~> 10.0"
24
+ spec.add_development_dependency "minitest"
24
25
  end
data/test/basic_test.rb CHANGED
@@ -309,4 +309,8 @@ class BasicTest < Minitest::Test
309
309
  rx = List::Matcher.pattern %w(a), bound: :word, atomic: false
310
310
  assert_equal '\ba\b', rx
311
311
  end
312
+
313
+ def test_empty_list
314
+ assert_equal '(?!)', List::Matcher.pattern([])
315
+ end
312
316
  end
data/test/benchmarks.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'list_matcher'
2
2
  require 'benchmark/ips'
3
+ require 'set'
3
4
 
4
5
  size = 100
5
6
  magnitudes = 3
metadata CHANGED
@@ -1,43 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: list_matcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - dfhoughton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-04 00:00:00.000000000 Z
11
+ date: 2016-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.7'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: List::Matcher automates the generation of efficient regular expressions.
42
56
  email:
43
57
  - dfhoughton@gmail.com
@@ -45,7 +59,7 @@ executables: []
45
59
  extensions: []
46
60
  extra_rdoc_files: []
47
61
  files:
48
- - .gitignore
62
+ - ".gitignore"
49
63
  - Gemfile
50
64
  - LICENSE.txt
51
65
  - README.md
@@ -69,17 +83,17 @@ require_paths:
69
83
  - lib
70
84
  required_ruby_version: !ruby/object:Gem::Requirement
71
85
  requirements:
72
- - - '>='
86
+ - - ">="
73
87
  - !ruby/object:Gem::Version
74
88
  version: '2.0'
75
89
  required_rubygems_version: !ruby/object:Gem::Requirement
76
90
  requirements:
77
- - - '>='
91
+ - - ">="
78
92
  - !ruby/object:Gem::Version
79
93
  version: '0'
80
94
  requirements: []
81
95
  rubyforge_project:
82
- rubygems_version: 2.2.2
96
+ rubygems_version: 2.4.8
83
97
  signing_key:
84
98
  specification_version: 4
85
99
  summary: List::Matcher automates the generation of efficient regular expressions.