class WordcutA::Wordcut
Public Class Methods
new(dict_path)
click to toggle source
# File lib/wordcuta.rb, line 28 def initialize(dict_path) @wordcut_p = FFI::AutoPointer.new(WordcutFFI.wordcut_new_with_dict(dict_path), WordcutFFI.method(:delete_wordcut)) end
Public Instance Methods
into_ranges(text)
click to toggle source
# File lib/wordcuta.rb, line 33 def into_ranges(text) ranges = [] FFI::MemoryPointer.new(:size_t, 1) do |range_cnt| ranges_p = WordcutFFI.wordcut_into_text_ranges(@wordcut_p, text, range_cnt) ranges = range_cnt.get_uint(0) .times .map {WordcutFFI::TextRange.new(ranges_p + _1 * WordcutFFI::TextRange.size)} .map {TextRange.new(_1[:s], _1[:e])} end return ranges end
into_strings(text)
click to toggle source
# File lib/wordcuta.rb, line 45 def into_strings(text) words = [] FFI::MemoryPointer.new(:size_t, 1) do |words_cnt_p| words_p = WordcutFFI::wordcut_into_strings(@wordcut_p, text, words_cnt_p) words_cnt = words_cnt_p.get_uint(0) words = words_p.get_array_of_string(0, words_cnt) WordcutFFI::delete_strings(words_p, words_cnt) end return words.map {_1.force_encoding("UTF-8")} end
put_delimiters(text, delim)
click to toggle source
# File lib/wordcuta.rb, line 56 def put_delimiters(text, delim) WordcutFFI::wordcut_put_delimiters(@wordcut_p, text, delim).force_encoding("UTF-8") end