keyword_finder 0.2.3 → 0.3
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 +4 -4
- data/lib/keyword_finder/keywords.rb +17 -12
- data/lib/keyword_finder/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6eb718b2a534b20dca7e09ee120890ec77bfa1b
|
4
|
+
data.tar.gz: cb754ff99ce1064afeeac4d26276b3962cbd849d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ecadae7d7b8976ffc1546b34781218d3f573d30491f6501ae5b140931cf4a31516964a4eff2bb63af1bf31b45cc2b98000608dc1f9689e72132a573eb3838657
|
7
|
+
data.tar.gz: a6de7e1c5efdc3f3dc960420ba66ab31d7940cdbd616f82c006241e65382f1320098aa149840adb7a76ca44ef862a9a803a6b153a7587aabb710f7d5687940c7
|
@@ -6,14 +6,18 @@ module KeywordFinder
|
|
6
6
|
def escape_regex_chars string
|
7
7
|
Regexp.escape(string).downcase
|
8
8
|
end
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
|
10
|
+
def to_regex(options={})
|
11
|
+
options = {entire_words_only: true}.merge(options)
|
12
|
+
spacer = options[:entire_words_only] ? "\\s" : ""
|
13
|
+
@to_regex = {} unless defined?(@to_regex)
|
14
|
+
@to_regex[options[:entire_words_only]] ||= Regexp.new("(#{
|
15
|
+
self.ordered_by_length.collect{|a| "#{spacer}#{self.escape_regex_chars(a.gsub(' ', ' '))}#{spacer}"}.join("|")
|
12
16
|
})")
|
13
17
|
end
|
14
18
|
|
15
|
-
def scan_in sentence
|
16
|
-
" #{sentence} ".scan(self.to_regex)
|
19
|
+
def scan_in sentence, options={}
|
20
|
+
" #{sentence} ".scan(self.to_regex(options))
|
17
21
|
end
|
18
22
|
|
19
23
|
def clean_sentence sentence
|
@@ -26,8 +30,8 @@ module KeywordFinder
|
|
26
30
|
gsub(/([A-Za-z]+\([A-Za-z]*\)[A-Za-z]*)/) { |s| s.gsub(/(\(|\))/,'') }
|
27
31
|
end
|
28
32
|
|
29
|
-
def scan_part sentence
|
30
|
-
scan_results = self.scan_in(self.clean_sentence(sentence))
|
33
|
+
def scan_part sentence, options={}
|
34
|
+
scan_results = self.scan_in(self.clean_sentence(sentence), options)
|
31
35
|
scan_results.flatten!
|
32
36
|
scan_results.uniq!
|
33
37
|
scan_results.compact!
|
@@ -42,27 +46,28 @@ module KeywordFinder
|
|
42
46
|
#
|
43
47
|
#
|
44
48
|
# @param [String] sentence that might contain the keywords this instance was initalized with
|
45
|
-
# @param [Hash] options; notably the +:subsentences_strategy+, which can be one of +:none+, +:ignore_if_found_in_main+, +:always_ignore+
|
49
|
+
# @param [Hash] options; notably the +:subsentences_strategy+, which can be one of +:none+, +:ignore_if_found_in_main+, +:always_ignore+ and the +:entire_words_only+ boolean, which can be either +true+ or +false+
|
46
50
|
|
47
51
|
def find_in sentence, options={}
|
48
52
|
options = {
|
49
|
-
subsentences_strategy: :none # :none, :ignore_if_found_in_main, :always_ignore
|
53
|
+
subsentences_strategy: :none, # :none, :ignore_if_found_in_main, :always_ignore
|
54
|
+
entire_words_only: true
|
50
55
|
}.merge(options)
|
51
56
|
|
52
57
|
sentence = sentence.downcase.gsub(/\n/," ")
|
53
58
|
|
54
|
-
full_sentence_results = self.scan_part(sentence)
|
59
|
+
full_sentence_results = self.scan_part(sentence, options)
|
55
60
|
|
56
61
|
sentence = self.combine_more_specifics(sentence)
|
57
62
|
main_and_subs = self.separate_main_and_sub_sentences(sentence)
|
58
|
-
main_results = self.scan_part(main_and_subs[:main])
|
63
|
+
main_results = self.scan_part(main_and_subs[:main], options)
|
59
64
|
|
60
65
|
sub_results = []
|
61
66
|
unless (
|
62
67
|
options[:subsentences_strategy] == :always_ignore or
|
63
68
|
(main_results.count > 0 and options[:subsentences_strategy] == :ignore_if_found_in_main)
|
64
69
|
)
|
65
|
-
sub_results = main_and_subs[:subs].collect{|subsentence| self.scan_part(subsentence)}.flatten
|
70
|
+
sub_results = main_and_subs[:subs].collect{|subsentence| self.scan_part(subsentence, options)}.flatten
|
66
71
|
end
|
67
72
|
|
68
73
|
clean_sentence_results = main_results + sub_results
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: keyword_finder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.3'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- murb
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -94,8 +94,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
94
94
|
version: '0'
|
95
95
|
requirements: []
|
96
96
|
rubyforge_project:
|
97
|
-
rubygems_version: 2.5
|
97
|
+
rubygems_version: 2.4.5
|
98
98
|
signing_key:
|
99
99
|
specification_version: 4
|
100
100
|
summary: Find given set of keywords in a sentence.
|
101
101
|
test_files: []
|
102
|
+
has_rdoc:
|