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 +5 -5
- checksums.yaml.gz.sig +0 -0
- data/lib/phrase_lookup.rb +69 -51
- data.tar.gz.sig +0 -0
- metadata +33 -30
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1aefccf9a3e66b75245de27255b58f8d6f1e988263ec9f50599659bba92fb9ee
|
4
|
+
data.tar.gz: def447233c8586a549e3263fc6517ce37e84b8a08432a1e4f24bd5744d8029e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 '
|
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 =
|
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
|
-
|
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, _ =
|
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, _ =
|
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.
|
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
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
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:
|
38
|
+
date: 2022-02-23 00:00:00.000000000 Z
|
35
39
|
dependencies:
|
36
40
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
41
|
+
name: rxfreadwrite
|
38
42
|
requirement: !ruby/object:Gem::Requirement
|
39
43
|
requirements:
|
40
44
|
- - "~>"
|
41
45
|
- !ruby/object:Gem::Version
|
42
|
-
version: '0.
|
46
|
+
version: '0.2'
|
43
47
|
- - ">="
|
44
48
|
- !ruby/object:Gem::Version
|
45
|
-
version: 0.4
|
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.
|
56
|
+
version: '0.2'
|
53
57
|
- - ">="
|
54
58
|
- !ruby/object:Gem::Version
|
55
|
-
version: 0.4
|
59
|
+
version: 0.2.4
|
56
60
|
description:
|
57
|
-
email:
|
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
|
-
|
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
|