keyword_finder 0.1.1 → 0.1.2

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
2
  SHA1:
3
- metadata.gz: 2d2ffa4c856beb883fe0de8d43583d871cbd2e99
4
- data.tar.gz: 98555a484aad026fd7a343ec8eda923b878a0625
3
+ metadata.gz: 0dd010b498bebdedbb2a27b95760645bfe2c5f45
4
+ data.tar.gz: 12a32eee997aa77ef87247b747bb10d680ff6ce8
5
5
  SHA512:
6
- metadata.gz: 9f95f4ae6718c346ea9f54edb53abb26cec97e50e354c80484136e199be4bbeae3eb72b683f439fdb8ceeabcc8f4f2d5faeda32d23a9d2ae403e361674b9b580
7
- data.tar.gz: 0b2f0e427bce9c4ac532f995a80bf3c3a908b0d445d028ce1fc1055b524ffec4cdbcc8db0582f781a3a7760b982735fd622683fde109f17fe8e84ed01d1dcc6d
6
+ metadata.gz: c37be69c1fca9f4978123b82ff0d8223de110130b06dc981ae0f157a4f1c488f56ca224a74400e61f78eb160983969ecc502d6d431f932ca497df5df2e8224b5
7
+ data.tar.gz: ae85cf9f939e53caa71a5ebec19e57ca4edeeef9ec3acad743f5d8434c85b93e7407663701bbb7a40c413223b79715fe92ed08bbf5e6e18453cbb26b58804acb
@@ -21,7 +21,9 @@ module KeywordFinder
21
21
  end
22
22
 
23
23
  def combine_more_specifics sentence
24
- sentence.gsub(/([A-Za-z]*\([A-Za-z]*\)[A-Za-z]*)/) { |s| s.gsub(/(\(|\))/,'') }
24
+ sentence.
25
+ gsub(/([A-Za-z]*\([A-Za-z]*\)[A-Za-z]+)/) { |s| s.gsub(/(\(|\))/,'') }.
26
+ gsub(/([A-Za-z]+\([A-Za-z]*\)[A-Za-z]*)/) { |s| s.gsub(/(\(|\))/,'') }
25
27
  end
26
28
 
27
29
  def scan_part sentence
@@ -36,14 +38,22 @@ module KeywordFinder
36
38
  results
37
39
  end
38
40
 
41
+ # find in a sentence
42
+ #
43
+ #
44
+ # @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+
46
+
39
47
  def find_in sentence, options={}
40
48
  options = {
41
49
  subsentences_strategy: :none # :none, :ignore_if_found_in_main, :always_ignore
42
50
  }.merge(options)
43
51
 
52
+ full_sentence_results = self.scan_part(sentence)
44
53
  sentence = self.combine_more_specifics(sentence)
45
54
  main_and_subs = self.separate_main_and_sub_sentences(sentence)
46
55
  main_results = self.scan_part(main_and_subs[:main])
56
+
47
57
  sub_results = []
48
58
  unless (
49
59
  options[:subsentences_strategy] == :always_ignore or
@@ -51,7 +61,35 @@ module KeywordFinder
51
61
  )
52
62
  sub_results = main_and_subs[:subs].collect{|subsentence| self.scan_part(subsentence)}.flatten
53
63
  end
54
- return main_results + sub_results
64
+
65
+ clean_sentence_results = main_results + sub_results
66
+
67
+ return select_the_best_results(clean_sentence_results, full_sentence_results)
68
+ end
69
+
70
+ def select_the_best_results result_set_a, result_set_b
71
+ ## check whether there are better matches in the full sentence approach (or the other way around)
72
+ result_set_a_to_delete = []
73
+ result_set_b_to_delete = []
74
+
75
+ result_set_a.each do |result_a|
76
+ result_set_b.each do |result_b|
77
+ if result_a.match(escape_regex_chars(result_b))
78
+ result_set_b_to_delete << result_b
79
+ elsif result_b.match(escape_regex_chars(result_a))
80
+ result_set_a_to_delete << result_a
81
+ end
82
+ end
83
+ end
84
+
85
+ result_set_a_to_delete.each do |a|
86
+ result_set_a.delete(a)
87
+ end
88
+ result_set_b_to_delete.each do |a|
89
+ result_set_b.delete(a)
90
+ end
91
+
92
+ return result_set_a + result_set_b
55
93
  end
56
94
 
57
95
  def separate_main_and_sub_sentences sentence
@@ -59,7 +97,7 @@ module KeywordFinder
59
97
  subs.each do |subsentence|
60
98
  sentence = sentence.gsub(subsentence,"")
61
99
  end
62
- {main:sentence,subs:subs.collect{|a| a[1..(a.length-2)]}}
100
+ {main:sentence.strip,subs:subs.collect{|a| a[1..(a.length-2)].strip}}
63
101
  end
64
102
 
65
103
  end
@@ -1,3 +1,3 @@
1
1
  module KeywordFinder
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
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.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - murb
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-23 00:00:00.000000000 Z
11
+ date: 2016-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -94,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
94
  version: '0'
95
95
  requirements: []
96
96
  rubyforge_project:
97
- rubygems_version: 2.4.5
97
+ rubygems_version: 2.5.1
98
98
  signing_key:
99
99
  specification_version: 4
100
100
  summary: Find given set of keywords in a sentence.