Class: KaeruKeyword
- Inherits:
-
Object
- Object
- KaeruKeyword
- Defined in:
- lib/kaerukeyword.rb
Overview
KaeruKeyword
KaeruKeyword は登録されたキーワードが文中に存在 するかどうかを調べることができます。
インスタンスの作成時にキーワードを登録できます。
keywords = KaeruKeyword.new([“Ruby”, “Rails”])
あとからキーワードを追加することもできます。
keywords << “Tsukasa”
searchメソッドで文中からキーワードを探し出します。 キーワードが見つかったときは、そのキーワードを 含めた配列を返します。
keywords.search(“I Love Ruby”) #=> [“Ruby”]
Copyright 2008 © Tsukasa OISHI, under MIT License.
おおいしつかさ www.kaeruspoon.net
Instance Method Summary collapse
- #add(key) ⇒ Object (also: #<<)
-
#initialize(key_array = nil) ⇒ KaeruKeyword
constructor
A new instance of KaeruKeyword.
- #search(text) ⇒ Object
Constructor Details
#initialize(key_array = nil) ⇒ KaeruKeyword
Returns a new instance of KaeruKeyword.
34 35 36 37 |
# File 'lib/kaerukeyword.rb', line 34 def initialize(key_array = nil) @tree = {} key_array.each {|k| add(k)} if key_array.is_a?(Array) end |
Instance Method Details
#add(key) ⇒ Object Also known as: <<
39 40 41 42 43 44 45 46 |
# File 'lib/kaerukeyword.rb', line 39 def add(key) now = @tree key.split(//).each do |c| now[c] = {} unless now.has_key? c now = now[c] end now[:end] = key end |
#search(text) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/kaerukeyword.rb', line 49 def search(text) list = [] word = "" now = @tree text.split(//).each do |c| unless now.has_key? c unless word.empty? list << word word = "" end now = @tree end if now.has_key? c now = now[c] word = now[:end] if now[:end] end end unless word.empty? list << word end list end |