sensitive 1.0.1 → 1.0.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
  SHA256:
3
- metadata.gz: d573fe1895ec72ded6aba1629cc2679bf9934ad052960b92a486f58a4bc815db
4
- data.tar.gz: b6cf6c1b33aacdf0d434c50430defd6640ea44bae4aa9c54a1670d6e13a82dba
3
+ metadata.gz: 7a0c7b2783e4a289c75085a9847ff9fd53ac9d163f2522502eb50b498114d7d8
4
+ data.tar.gz: 9853a9324c46df9d3367076885463fdfb444a751bc72b106276ea04b67b2a98a
5
5
  SHA512:
6
- metadata.gz: 3f17f4c1811e5625a66ed3f6933a93fe031f4a48276e4fd7d0cc9b1b8653c0f6af92716e6c368d1159f4a7297571baeee36fb268fb87bfb7f67e5131108dcacb
7
- data.tar.gz: d17bda54080c38834478e122b83f5477a27494322f67279d3bb225fb8b924803ffa9b594c7c34df534a908dc6572c7eb362e600d7e41238fcda65d908665b669
6
+ metadata.gz: c9bb5f19e93b62d8c14f8a6e67d56d1591ac9b3861f3daab50d719f39d92b586ba717418930fe294cc3ced070d1b8d6ed2f8d210f6e5c4f92b4b0a2c202e2918
7
+ data.tar.gz: 6c125acc9f232f93afe7e6911c3d742ed15f5fe1526590df821ff310300d67594f8eee6818e38119713b38902168d23752ec923eefc2c223dd77d16e3499cb1b
@@ -13,18 +13,12 @@ module Sensitive
13
13
 
14
14
  # 添加单个敏感词
15
15
  def add_word(word)
16
- temp = words
17
- # 去掉敏感词中的特殊符号,只保留汉字,英文和 数字
18
16
  word = word.strip.gsub(%r{[^\p{Han}+/ua-zA-Z0-9]}, '')
19
- word.chars.each_with_index do |char, index|
20
- if temp.key?(char)
21
- temp = temp[char][:value]
22
- elsif index == word.chars.size - 1
23
- temp[char] = { is_end: true, value: {} }
24
- else
25
- temp[char] = { is_end: false, value: {} }
26
- temp = temp[char][:value]
17
+ word.chars.inject(self.words) do |words, char|
18
+ if !words.key? char
19
+ words[char] = {}
27
20
  end
21
+ words[char]
28
22
  end
29
23
  end
30
24
 
@@ -47,31 +41,27 @@ module Sensitive
47
41
 
48
42
  # 过滤敏感词
49
43
  def filter(word)
50
- # matched_one 判断某个字是否被关键字命中过
51
- matched_one = false
52
44
  sensitive_word = ''
53
- temp = words.clone
54
45
  word = word.strip.gsub(%r{[^\p{Han}+/ua-zA-Z0-9]}, '')
55
- word.chars.each_with_index do |char, index|
56
- if temp.key? char
57
- matched_one = true
46
+ word.chars.each_with_index.inject(self.words) do |words, (char, index)|
47
+ if words.key?(char)
58
48
  sensitive_word += char
59
- break if temp[char][:is_end]
49
+ break if words[char].empty?
60
50
  # 如果被检测的词已是最后一个,但关键字还不是最后,则返为空
61
51
  return '' if index == word.size - 1
62
- temp = temp[char][:value]
52
+ words[char]
63
53
  else
64
- sensitive_word = ''
65
54
  # 如果上一步在关键字中,这次又不在关键字中,需要重新初始化检测
66
- if matched_one
67
- matched_one = false
68
- temp = words.clone
69
- redo
55
+ if !sensitive_word.empty?
56
+ sensitive_word = ''
57
+ words = self.words and redo
58
+ else
59
+ words
70
60
  end
71
61
  end
72
62
  end
73
63
  sensitive_word
74
64
  end
75
65
  end
76
-
77
66
  end
67
+
@@ -1,3 +1,3 @@
1
1
  module Sensitive
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.2"
3
3
  end
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensitive
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - luolin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-25 00:00:00.000000000 Z
11
+ date: 2020-06-26 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: 用Ruby实现DFA算法,实现敏感词过滤, 自带敏感词库
14
14
  email:
@@ -31,6 +31,7 @@ files:
31
31
  - lib/sensitive.rb
32
32
  - lib/sensitive/version.rb
33
33
  - sensitive-1.0.0.gem
34
+ - sensitive-1.0.1.gem
34
35
  - sensitive.gemspec
35
36
  - sensitives.txt
36
37
  homepage: https://github.com/luolinae86/sensitive