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