Class: SensitiveWordFilter::DfaTree

Inherits:
Object
  • Object
show all
Defined in:
lib/sensitive_word_filter/dfa_tree.rb

Defined Under Namespace

Classes: Word

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(words = nil) ⇒ DfaTree

Returns a new instance of DfaTree.



7
8
9
10
# File 'lib/sensitive_word_filter/dfa_tree.rb', line 7

def initialize(words=nil)
  @tree = Hash.new
  @words = words || []
end

Instance Attribute Details

#treeObject

Returns the value of attribute tree.



5
6
7
# File 'lib/sensitive_word_filter/dfa_tree.rb', line 5

def tree
  @tree
end

#wordsObject

Returns the value of attribute words.



5
6
7
# File 'lib/sensitive_word_filter/dfa_tree.rb', line 5

def words
  @words
end

Instance Method Details

#dfa_treeObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/sensitive_word_filter/dfa_tree.rb', line 12

def dfa_tree
  words.each do |word|
    word_hash = tree
  
    _word = word.strip
    word_length = _word.length
  
    (1..word_length).each do |i|
      c = _word[i-1]
      if word_hash[c].nil?
        if i == word_length
          word_hash[c] = Word.new(true, Hash.new)
        else
          word_hash[c] = Word.new(false, Hash.new)
          word_hash = word_hash[c].value
        end
      else
        word_hash = word_hash[c].value
      end
    end
  end
  tree
end