phrase_lookup 0.1.7 → 0.2.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
- SHA1:
3
- metadata.gz: 445e3b08f2b2a4152aad4dffa8290256a1782210
4
- data.tar.gz: '0956745dcb6bc0d9689528dd483eb5a079dd5d3d'
2
+ SHA256:
3
+ metadata.gz: 1aefccf9a3e66b75245de27255b58f8d6f1e988263ec9f50599659bba92fb9ee
4
+ data.tar.gz: def447233c8586a549e3263fc6517ce37e84b8a08432a1e4f24bd5744d8029e0
5
5
  SHA512:
6
- metadata.gz: 5f4a339a1e7e2164479edfd87d3858d640d8a1e8a43329d974c23f087158c3e1560b877000da58ca496f9e814902685ea07942aefa27b4deebc1684469eeb23a
7
- data.tar.gz: 65022771885abe43116f52021d2e16f9e0654ac6761f1bb145ba53a8ce8596c0958dcfb6075444d4ce740cceafade9977d7fa09ac931c51ee829dfa8200f2665
6
+ metadata.gz: 35aaa7dfc6255ae42eab66f57653d1d908b7a143093063dd067a2b3db8f3d8ec1451f5a7cd9af2b91d9ec89fb52582328726d1070e725705bd2363548d8037d4
7
+ data.tar.gz: e0c01ec4b69bafe5a849b6045476ce1f27b57f49887fe63a72dfb4a0f37bae70d9152589932cf384e39c9c53658adaeb010f50a03934ba9e426e9e2e2a6b352b
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/phrase_lookup.rb CHANGED
@@ -6,111 +6,128 @@
6
6
 
7
7
 
8
8
  require 'yaml'
9
- require 'rxfhelper'
9
+ require 'rxfreadwrite'
10
10
 
11
11
 
12
12
  class PhraseLookup
13
13
 
14
- def initialize(obj=nil)
14
+ def initialize(obj=nil, debug: false)
15
+
16
+ @debug = debug
15
17
 
16
18
  @master = if obj then
17
-
19
+
18
20
  if obj.is_a? String then
19
-
20
- s = RXFHelper.read(obj).first
21
-
21
+
22
+ s = RXFReader.read(obj).first
23
+
22
24
  if s.lstrip =~ /^---/ then # it's YAML
23
-
25
+
24
26
  Master.new( YAML.load(s))
25
-
27
+
26
28
  elsif s =~ /: / # it's the contents of a log file
27
-
29
+
28
30
  m = Master.new
29
31
  m.create s
30
32
  m
31
-
33
+
32
34
  else # it's plain text
33
-
35
+
34
36
  m = Master.new
35
37
  m.create_from_txt s
36
38
  m
37
-
39
+
38
40
  end
41
+
42
+ elsif obj.is_a? Array
43
+
44
+ puts 'array detected' if @debug
45
+
46
+ m = Master.new
47
+ m.parse_array obj
48
+ m
49
+
39
50
  else
40
51
  Master.new obj
41
52
  end
42
-
53
+
43
54
  end
44
-
55
+
45
56
 
46
57
  end
47
-
48
- class Master
49
-
58
+
59
+ class Master
60
+ include RXFReadWriteModule
61
+
50
62
  def initialize(h={})
51
63
 
52
64
  @h = h
53
-
65
+
54
66
  end
55
-
67
+
56
68
  def create(s)
57
-
69
+
58
70
  @h = parse_log(s)
59
-
71
+
60
72
  end
61
-
73
+
62
74
  def create_from_txt(s)
63
-
75
+
64
76
  @h = parse(s)
65
-
66
- end
67
-
77
+
78
+ end
79
+
68
80
  def update(s)
69
81
 
70
82
  parse_log(s).each {|k,v| @h.has_key?(k) ? @h[k] += v : @h[k] = v }
71
83
 
72
84
  end
73
-
85
+
74
86
  def save(filename='master.yaml')
75
- File.write filename, @h.sort.to_h.to_yaml
87
+ FileX.write filename, @h.sort.to_h.to_yaml
76
88
  end
77
-
89
+
78
90
  def to_h()
79
91
  @h.clone
80
92
  end
81
-
82
- private
83
-
93
+
84
94
  def parse(raw_s)
85
-
86
- s, _ = RXFHelper.read(raw_s)
87
-
95
+
96
+ s, _ = RXFReader.read(raw_s)
97
+
88
98
  a = s.downcase.gsub(/\?/,'').lines.map(&:strip).compact
89
99
  a.uniq.inject({}) {|r,x| r.merge x => a.count(x)}
90
-
91
- end
92
-
100
+
101
+ end
102
+
103
+ def parse_array(a)
104
+
105
+ @h = a.map {|x| x.downcase.gsub(/\?/,'')}\
106
+ .inject({}) {|r,x| r.merge x => a.count(x)}
107
+
108
+ end
109
+
93
110
  def parse_log(raw_s)
94
-
95
- s, _ = RXFHelper.read(raw_s)
96
-
97
- a = s.downcase.gsub(/\?/,'').lines.map do |x|
111
+
112
+ s, _ = RXFReader.read(raw_s)
113
+
114
+ a = s.downcase.gsub(/\?/,'').lines.map do |x|
98
115
  phrase = x.strip[/(?<=: )[^|]+(?= )/i]
99
116
  phrase.length < 50 ? phrase : nil if phrase
100
117
  end.compact
101
-
118
+
102
119
  a.uniq.inject({}) {|r,x| r.merge x => a.count(x)}
103
-
120
+
104
121
  end
105
122
  end
106
123
 
107
124
  def lookup(s, limit: 10, search_tags: false)
108
-
125
+
109
126
  return [] if s.empty?
110
-
127
+
111
128
  h = @master.to_h
112
129
  a = h.keys
113
-
130
+
114
131
  a3 = if search_tags then
115
132
  a.grep /\].*(?:\b#{s}\b|\b#{s}).*\|.*(?:\b#{s}\b|\b#{s})/i
116
133
  else
@@ -121,12 +138,12 @@ class PhraseLookup
121
138
  end
122
139
 
123
140
  return a3.sort_by {|word| -h[word]}.map {|x| x.sub(/ +\|.*$/,'')}\
124
- .uniq.take(limit)
125
-
141
+ .uniq.take(limit)
142
+
126
143
  end
127
144
 
128
145
  alias q lookup
129
-
146
+
130
147
  def master()
131
148
  @master
132
149
  end
@@ -134,4 +151,5 @@ class PhraseLookup
134
151
  def save(filename='phrase_lookup.yaml')
135
152
  @master.save filename
136
153
  end
137
- end
154
+ end
155
+
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phrase_lookup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,51 +10,55 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
14
- YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
- 8ixkARkWAmV1MB4XDTE3MTAxMTExMzUxNVoXDTE4MTAxMTExMzUxNVowSDESMBAG
16
- A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
- EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
- ggEBALxTjEVtvsr1rCCnEdMkyx9b0CYjz3q90IaS8rGklhAO6u90AYfLTahxSTY/
19
- U6ibpX2HFhu1mi03mq+JiNEkpsuk4w7/+l4lYlP3HtIYmMdssiwZnH+QyB4aP7R4
20
- isso+Op95NkVNRw0oVTDjtpNl0IvonXB/6yGVRla9J8Erz9MLW89f4sHP0FGexzw
21
- r/BGLqtVUNxha8hnH/BVyjkkYMKBYNpgOshZ313gmT4sPfavckbNbsUlhWHN+fuZ
22
- i1yeuU231IihQyo45w8z/OsGhnXheDziHaEQ9KYo2jY2G/smWyfByj0RNQ1szBHj
23
- H3HrfB401uYqre46iZjGpGP53/UCAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
24
- DwQEAwIEsDAdBgNVHQ4EFgQUZRNz6mn0Jnt/0zxQhfGhfnHM+zAwJgYDVR0RBB8w
25
- HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
26
- c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEAo+OjhDsb
27
- I4O7uXvyMprFsmrPxLqJQZiG3Ca4biUSx9dTji5jwPctqzXUxB8shQV6iI0J2G/9
28
- tghJOAqy18lXhlS0eBqZNuXS9rpDfiKOIeiD4X7GRbtIMmg68HKnW2l72ij5d+ay
29
- oUN/NTJOCHKrgJ48XxdHG/4eYyQDXWVtduAitqNXvMREeP8eP6j2icBXP15bZpgY
30
- DUWq9PrW+gmCWIDmnMtW8YTWTR+FnI+uGhcoFYucP1uKUv9J5EQp/B40m1Qoxnz6
31
- m1kU5vbLTlJYenStfwtXDnHL7ul9y7MaPO+5UyjWWUuz8iRexmjB/HymNMK7NwPv
32
- YzZJ2MWOCulgfw==
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwMjIzMTkwMzI3WhcN
15
+ MjMwMjIzMTkwMzI3WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDoHnqj
17
+ TM2ZXYOTvfJh6HL3aANUTZYiHo5eRhZVHnbvkD3D696L1gK11Xoue3q1PF6QV/BP
18
+ PCz2uF1veQbL7Mt0l4r4RMEZDaKjUCurcVP1scFoUFV6JW44o/IBglek64Gbi7rC
19
+ RvdNn2W0oo6qum0a1KhcfdzlRVwVEENVHWfarSLur48l2Uwc6DQrd2aXSMMlsFD5
20
+ X1+D1E6L6yx5YOU17K8+l/RYBJSIMUYRqsqjQzb+SK2L+YiEWbL/l98KOXhDQVBb
21
+ pGZN4XkByZuHASX0XYcE1jCdR3qaTlIqcMhilPdWnYmBImFC00vKnY3/Ig1IAFI6
22
+ ck+XmoTY46Jk/vCO5u2BSgPk8bG2IS4Pxwv3tiptvukTDCgyk4O7bnRCIebF6lKK
23
+ RM5lLUO0fwIDsTkgdNOxq0IxGLJIQVEYDyeW2FFUYiaF5tkaRLUPOe6AjC7TEFSP
24
+ L9Ez+PXtWDt7AuYFuZS+9oG0Z6taEBsp/M2dDne8QVo5/XFn//NIUTJNjyMCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUGQb9aF4B
26
+ t35fVGvOYmIMkJFaVIQwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAR7voLOl17Bq9FHhHJ8V/M6UqCwjoMRuNkVwjrjHj
29
+ kJAk4cxgxKvdEGyBOPETvL4NtaEIQk5E+bOhpv4z9vShPgJdh8eZBTiXOBEyfDLE
30
+ +NbxJxT15Ndi7nnWZ7Shjq0lh5tnKFtVG+su1Gxbxw6Q67EV8p+WB08i98YxQ/Rx
31
+ a0OtJ4E0+BM3wyUf5VZZlZdUiDFU6/XGIN3EzHwj/koUQaZKwTBlhiGWXw9WKbUL
32
+ 82wm7bmqVD6wmKrKswmjv8Rk299/XsutkXZUNuENQghYxaMW94809R6gc9BJu5HU
33
+ zmVRfgEddyGqIt54IpuH1L20ggh3yJhBMePZRNhU4JpcSJeO383MTRrXHft0lrCP
34
+ HMkEsRk6i0/T2rtSpfjJlkR4UhlfXTlkK28SXABYRteFALwHK0Y5cMyl8RbDEiPp
35
+ A2jeePyrfaR7oaEcMysAqLkt0TsponTcp0R+tdNpgA5flDyl5htca12fCGoqpM9h
36
+ u9fFJ3bpBEj+P7q6043p1TWh
33
37
  -----END CERTIFICATE-----
34
- date: 2017-12-26 00:00:00.000000000 Z
38
+ date: 2022-02-23 00:00:00.000000000 Z
35
39
  dependencies:
36
40
  - !ruby/object:Gem::Dependency
37
- name: rxfhelper
41
+ name: rxfreadwrite
38
42
  requirement: !ruby/object:Gem::Requirement
39
43
  requirements:
40
44
  - - "~>"
41
45
  - !ruby/object:Gem::Version
42
- version: '0.4'
46
+ version: '0.2'
43
47
  - - ">="
44
48
  - !ruby/object:Gem::Version
45
- version: 0.4.3
49
+ version: 0.2.4
46
50
  type: :runtime
47
51
  prerelease: false
48
52
  version_requirements: !ruby/object:Gem::Requirement
49
53
  requirements:
50
54
  - - "~>"
51
55
  - !ruby/object:Gem::Version
52
- version: '0.4'
56
+ version: '0.2'
53
57
  - - ">="
54
58
  - !ruby/object:Gem::Version
55
- version: 0.4.3
59
+ version: 0.2.4
56
60
  description:
57
- email: james@jamesrobertson.eu
61
+ email: digital.robertson@gmail.com
58
62
  executables: []
59
63
  extensions: []
60
64
  extra_rdoc_files: []
@@ -79,8 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
79
83
  - !ruby/object:Gem::Version
80
84
  version: '0'
81
85
  requirements: []
82
- rubyforge_project:
83
- rubygems_version: 2.6.13
86
+ rubygems_version: 3.2.22
84
87
  signing_key:
85
88
  specification_version: 4
86
89
  summary: Returns a list of matching phrases from plain text
metadata.gz.sig CHANGED
Binary file