phrase_lookup 0.1.7 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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