phrase_lookup 0.1.4 → 0.1.9

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: fd368d5aba0843e380540e9067541510ddf2754d
4
- data.tar.gz: b70ebf8bed7feb12a359eb5a46f708a69a7af1eb
2
+ SHA256:
3
+ metadata.gz: 5fd6a1b23e62042749f8cce80d87af6fb330212b192bd60a593a3cee6441de0e
4
+ data.tar.gz: a3bbb9361865709d77b455b85f371929e91f29371fe3ed98a5fbd844e7fee3d1
5
5
  SHA512:
6
- metadata.gz: f688e0f213dd0004989815f39c76fe7ae007444a7d9ebb8c5f872dea841a626d30bb5a3957637a74618a1bf11567ae305c49664685777ef5accbb903343ec848
7
- data.tar.gz: 33c2696e31a4295878a22a5e9c3f3be8aa85fd7bd7a22ad0a2c3ac98415318fae98b3123ce19aad6722f5c3cc28c800bc0d22136fb852f8c369fa9e33f4ae57c
6
+ metadata.gz: 6fdc2c7d1b02a0008d8f8a11b20aa26d6e78b2fb25b185f5213eb74b7a10569ba0c014cfcc189c71fe91c9d5b9019325c899a00d1a771e9a89b3032f415e20eb
7
+ data.tar.gz: eede7d74a9a1e21efcc022e4792bb07bc4006ac306c97dc81a7d297757d160e461cb1944838c9e73d32fd4df0b34c874252fb913972b8efa91432464c05f384c
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -11,28 +11,44 @@ require 'rxfhelper'
11
11
 
12
12
  class PhraseLookup
13
13
 
14
- def initialize(raw_s=nil)
14
+ def initialize(obj=nil, debug: false)
15
+
16
+ @debug = debug
15
17
 
16
- @master = if raw_s then
17
-
18
- s = RXFHelper.read(raw_s).first
18
+ @master = if obj then
19
19
 
20
- if s.lstrip =~ /^---/ then # it's YAML
20
+ if obj.is_a? String then
21
+
22
+ s = RXFHelper.read(obj).first
23
+
24
+ if s.lstrip =~ /^---/ then # it's YAML
25
+
26
+ Master.new( YAML.load(s))
27
+
28
+ elsif s =~ /: / # it's the contents of a log file
29
+
30
+ m = Master.new
31
+ m.create s
32
+ m
33
+
34
+ else # it's plain text
35
+
36
+ m = Master.new
37
+ m.create_from_txt s
38
+ m
39
+
40
+ end
21
41
 
22
- Master.new(s)
23
-
24
- elsif s =~ /: / # it's the contents of a log file
42
+ elsif obj.is_a? Array
25
43
 
26
- m = Master.new
27
- m.create s
28
- m
29
-
30
- else # it's plain text
44
+ puts 'array detected' if @debug
31
45
 
32
- m = Master.new
33
- m.create_from_txt s
34
- m
35
-
46
+ m = Master.new
47
+ m.parse_array obj
48
+ m
49
+
50
+ else
51
+ Master.new obj
36
52
  end
37
53
 
38
54
  end
@@ -42,9 +58,9 @@ class PhraseLookup
42
58
 
43
59
  class Master
44
60
 
45
- def initialize(yaml=nil)
61
+ def initialize(h={})
46
62
 
47
- @h = yaml ? YAML.load(yaml) : {}
63
+ @h = h
48
64
 
49
65
  end
50
66
 
@@ -72,9 +88,7 @@ class PhraseLookup
72
88
 
73
89
  def to_h()
74
90
  @h.clone
75
- end
76
-
77
- private
91
+ end
78
92
 
79
93
  def parse(raw_s)
80
94
 
@@ -85,6 +99,13 @@ class PhraseLookup
85
99
 
86
100
  end
87
101
 
102
+ def parse_array(a)
103
+
104
+ @h = a.map {|x| x.downcase.gsub(/\?/,'')}\
105
+ .inject({}) {|r,x| r.merge x => a.count(x)}
106
+
107
+ end
108
+
88
109
  def parse_log(raw_s)
89
110
 
90
111
  s, _ = RXFHelper.read(raw_s)
@@ -99,18 +120,24 @@ class PhraseLookup
99
120
  end
100
121
  end
101
122
 
102
- def lookup(s, limit: 10)
123
+ def lookup(s, limit: 10, search_tags: false)
103
124
 
104
125
  return [] if s.empty?
105
126
 
106
127
  h = @master.to_h
107
128
  a = h.keys
108
129
 
109
- a1 = a.grep /^#{s}/i
110
- a2 = a.grep /\b#{s}/i
130
+ a3 = if search_tags then
131
+ a.grep /\].*(?:\b#{s}\b|\b#{s}).*\|.*(?:\b#{s}\b|\b#{s})/i
132
+ else
133
+ a1, a2 = [/^#{s}/i, /\b#{s}/i].map do |regex|
134
+ a.select {|x| x.gsub(/\[[^\]]*\]/,'').gsub(/\([^\)]*\)/,'') =~ regex}
135
+ end
136
+ (a1 + a2)
137
+ end
111
138
 
112
- return (a1 + a2).uniq.sort_by {|word| -h[word]}.take(limit)\
113
- .map {|x| x.sub(/ +\|.*$/,'')}
139
+ return a3.sort_by {|word| -h[word]}.map {|x| x.sub(/ +\|.*$/,'')}\
140
+ .uniq.take(limit)
114
141
 
115
142
  end
116
143
 
@@ -123,4 +150,5 @@ class PhraseLookup
123
150
  def save(filename='phrase_lookup.yaml')
124
151
  @master.save filename
125
152
  end
126
- end
153
+ end
154
+
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.4
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,49 +10,53 @@ 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
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTkxMTIwMTM0OTQxWhcN
15
+ MjAxMTE5MTM0OTQxWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDnocIe
17
+ ynp7xpDa6f+1R5habPc41uZOzQoXVrbCcOhmY9o5192YC7f+HBL+ebLdYdWFpSO5
18
+ MRtYzU5nmuCnAfY7L3KiVWSpf6s9sbPz9D5Rkt6PmCuuToPl2q0SZkdImRHH4+YP
19
+ IjMLZNVS9qPgEhj/iRH7eKyD/9AO7dO6yn3KGuJ9aQYmak1GD4NAh34jhT3nzuDf
20
+ IlWNlEfdqU3AJX15C+7Ai4ITTS6wzpbNNXlHYN6TKYYa1Kw3xo29FK8kHozK4NB7
21
+ GdlDSpm1EP4ag39ti7RlDyrs+zmGlazNr8FZv6h4TEsyaxN+VYr58QuikVf51HA9
22
+ U6pjVpQRI0PnVzvOQYMP+e4oZyGsiIjGfljxthu3LX4D331OQk1uAZ7+WWE2DUs5
23
+ kIFRRPvnen1ZlcA0OujWceNXEKrsMhdkfVNNjO5dgnqY8OMMdXU5Pgn/FHAGn8s7
24
+ 7RG9RefAIAzUpi8v4a8p7B9A7T7Tcy5cthE5J2LBpDaBk31VgGwQnqcOWXcCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUOFRUBh27
26
+ Laf49pgbo0YHv7TA1n8wJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAkG2HrpJKrfJYv9LzBMDW3ejjl2vlDRKWEXCQDZCA
29
+ hDVx7m5foGuON4yQuBvLl2qAn7M4TFYFB9twzFS9qhabr8syz/cnJslWDnhykVf4
30
+ TA3zQQyuzQWpMzPr4nO5dRy9ggm+WDJ2UThS0kTyV9BGeWqTXKUzWwlqI2nRxa+H
31
+ IlrX9Xu+Y9f8014sJ4PNmXydhK0qO39herMgjdhoHGdA7zP7u4i9c/diayRaEAI9
32
+ TcabuxBalabBraWkGnEAT2X33pnUusU01Uf4SUlA3+7JPKsQX3pXD9fvB1UoDjlq
33
+ 2WxByXLsLaXyguSwnONHhJRg9BpzzaK6ovztQzenjYZMVG7TpoHcxa4kucpK+zxB
34
+ nn243c2e6s2GTK+PGlsJoSfxhIlxeQMfvi+Jkbtr1kNSu+SKFt1TkL8TaTdJ7CNj
35
+ okm7UBOgnw1k05vu6nv459XCUeIFRegIYJ+P+mI15c8WMWOSdLK7NoU3qYil6Pgd
36
+ VWIRHmtajxS0oRQe/0SeVorH
33
37
  -----END CERTIFICATE-----
34
- date: 2017-11-20 00:00:00.000000000 Z
38
+ date: 2020-06-20 00:00:00.000000000 Z
35
39
  dependencies:
36
40
  - !ruby/object:Gem::Dependency
37
41
  name: rxfhelper
38
42
  requirement: !ruby/object:Gem::Requirement
39
43
  requirements:
40
- - - "~>"
41
- - !ruby/object:Gem::Version
42
- version: '0.4'
43
44
  - - ">="
44
45
  - !ruby/object:Gem::Version
45
- version: 0.4.3
46
+ version: 1.0.0
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.0'
46
50
  type: :runtime
47
51
  prerelease: false
48
52
  version_requirements: !ruby/object:Gem::Requirement
49
53
  requirements:
50
- - - "~>"
51
- - !ruby/object:Gem::Version
52
- version: '0.4'
53
54
  - - ">="
54
55
  - !ruby/object:Gem::Version
55
- version: 0.4.3
56
+ version: 1.0.0
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '1.0'
56
60
  description:
57
61
  email: james@jamesrobertson.eu
58
62
  executables: []
@@ -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.0.3
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