class ThaiLang::PrefixTree
Public Class Methods
new(sorted_words_with_payload)
click to toggle source
# File lib/thailang4r/word_breaker.rb, line 15 def initialize(sorted_words_with_payload) @prefix_tree = {} sorted_words_with_payload.each.with_index do |(w, payload), i| row_no = 0 ch_vec = w.codepoints ch_len = w.length ch_vec.each.with_index do |ch, j| node_key = NodeKey.new(row_no, j, ch) ex_node_ptr = @prefix_tree[node_key] if ex_node_ptr row_no = ex_node_ptr[NODE_PTR_ROW_NO] else is_final = (j + 1 == ch_len) node_ptr = [i, is_final, if is_final; payload; end] @prefix_tree[node_key] = node_ptr row_no = i end end end end
Public Instance Methods
lookup(row_id, offset, ch)
click to toggle source
# File lib/thailang4r/word_breaker.rb, line 36 def lookup(row_id, offset, ch) @prefix_tree[NodeKey.new(row_id, offset, ch)] end