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 +4 -4
- data/lib/sensitive.rb +14 -24
- data/lib/sensitive/version.rb +1 -1
- data/sensitive-1.0.1.gem +0 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7a0c7b2783e4a289c75085a9847ff9fd53ac9d163f2522502eb50b498114d7d8
|
|
4
|
+
data.tar.gz: 9853a9324c46df9d3367076885463fdfb444a751bc72b106276ea04b67b2a98a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c9bb5f19e93b62d8c14f8a6e67d56d1591ac9b3861f3daab50d719f39d92b586ba717418930fe294cc3ced070d1b8d6ed2f8d210f6e5c4f92b4b0a2c202e2918
|
|
7
|
+
data.tar.gz: 6c125acc9f232f93afe7e6911c3d742ed15f5fe1526590df821ff310300d67594f8eee6818e38119713b38902168d23752ec923eefc2c223dd77d16e3499cb1b
|
data/lib/sensitive.rb
CHANGED
|
@@ -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.
|
|
20
|
-
if
|
|
21
|
-
|
|
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
|
|
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
|
|
49
|
+
break if words[char].empty?
|
|
60
50
|
# 如果被检测的词已是最后一个,但关键字还不是最后,则返为空
|
|
61
51
|
return '' if index == word.size - 1
|
|
62
|
-
|
|
52
|
+
words[char]
|
|
63
53
|
else
|
|
64
|
-
sensitive_word = ''
|
|
65
54
|
# 如果上一步在关键字中,这次又不在关键字中,需要重新初始化检测
|
|
66
|
-
if
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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
|
+
|
data/lib/sensitive/version.rb
CHANGED
data/sensitive-1.0.1.gem
ADDED
|
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.
|
|
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-
|
|
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
|