trick_bag 0.52.0 → 0.53.0

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: 1d5d7bf7f9d42de360c17f2c0086fb8d4e5286c8
4
- data.tar.gz: 7fe3d0612c0354ae7e44b539f08aeb5610d1ec2f
3
+ metadata.gz: 10d48447cbfae946c5031fe4185b8f6e9b32db40
4
+ data.tar.gz: efbf46ebee805589444309d8152459c7be2aac47
5
5
  SHA512:
6
- metadata.gz: 18df24c9efffab6eb3f515f2a041f36ac168d6eee769a0482899d147652d41c14b4453e8f244ebff19663ae65ec2ab9a9e2a493cf77508e49d95c66f976df7d6
7
- data.tar.gz: 6def0aeb779f614446b072f68dffcea124a53fbaa5a3fb22a9f77845fe67712a793b7bb1a15f98113db02faa15a8441758e62fe171eb69c8a0a2dc6af35f76c4
6
+ metadata.gz: 7c857c06e68c514fdea178aeb10096c1039a410cffa3f82f6e5307049a9b647bf34b67e6b5136e08a12262bb9708afa7578ffd1e232d56eb56da7daa409a45a4
7
+ data.tar.gz: 8ea9e60093075ce0289cd64a9da2c6364bf0025fe77d69a74016cdf19851612e54124a311741af89c618a933713954153bb4d31535dd480c5e9de379a547432b
data/RELEASE_NOTES.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## v0.53.0
2
+
3
+ * Added RegexStringListAnalyzer.
4
+
5
+
1
6
  ## v0.52.0
2
7
 
3
8
  * Added RegexValidations.
@@ -27,5 +27,49 @@ module Validations
27
27
  regexes.none? { |regex| regex === string }
28
28
  end
29
29
 
30
+
31
+ # Analyzes a list of strings and a list of regexes, gathering information
32
+ # about which regexes match which strings. The to_h method returns
33
+ # a hash whose keys are the regexes and values are arrays of strings
34
+ # in the string list that match the regex. Note that if a string matches
35
+ # multiple regexes, it will be added to the arrays of all the regexes it matched.
36
+ class RegexStringListAnalyzer
37
+
38
+ attr_reader :regex_strings_hash
39
+
40
+ def initialize(regexes, strings)
41
+ @regex_strings_hash = regexes.each_with_object({}) do |regex, match_hash|
42
+ match_hash[regex] = []
43
+ end
44
+ strings.each do |string|
45
+ regexes_matched = regexes.select { |regex| regex === string }
46
+ regexes_matched.each do |regex_matched|
47
+ regex_strings_hash[regex_matched] << string
48
+ end
49
+ end
50
+ end
51
+
52
+
53
+ # Returns a hash whose keys are the regexes, and the values are the
54
+ # strings that matched the regex key.
55
+ def to_h
56
+ @regex_strings_hash
57
+ end
58
+
59
+
60
+ # Takes a match hash returned by the match_hash method above,
61
+ # and returns the regexes for which no matches were found.
62
+ def regexes_without_matches
63
+ regex_strings_hash.keys.select { |key| regex_strings_hash[key].empty? }
64
+ end
65
+
66
+
67
+ # Takes a match hash returned by the match_hash method above,
68
+ # and returns the regexes for which matches were found.
69
+ def regexes_with_matches
70
+ regex_strings_hash.keys.reject { |key| regex_strings_hash[key].empty? }
71
+ end
72
+ end
73
+
30
74
  end
31
75
  end
@@ -1,3 +1,3 @@
1
1
  module TrickBag
2
- VERSION = "0.52.0"
2
+ VERSION = "0.53.0"
3
3
  end
@@ -49,6 +49,30 @@ module TrickBag
49
49
  end
50
50
 
51
51
  end
52
+
53
+
54
+ context 'RegexStringListAnalyzer' do
55
+
56
+ expected_hash = { /a/ => %w(apple mango), /m/ => ['mango'], /z/ => [] }
57
+
58
+ subject do
59
+ strings = %w(apple mango)
60
+ TrickBag::Validations::RegexStringListAnalyzer.new(regexes, strings)
61
+ end
62
+
63
+ it 'should return a correct hash' do
64
+ expect(subject.to_h).to eq(expected_hash)
65
+ end
66
+
67
+ it 'should return the correct array of NONmatches' do
68
+ expect(subject.regexes_without_matches).to eq([/z/])
69
+ end
70
+
71
+ it 'should return the correct array of matches' do
72
+ expect(subject.regexes_with_matches).to eq([/a/, /m/])
73
+ end
74
+
75
+ end
52
76
  end
53
77
  end
54
78
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trick_bag
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.52.0
4
+ version: 0.53.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keith Bennett
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-22 00:00:00.000000000 Z
11
+ date: 2014-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: os