Class: ICU::BreakIterator

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/ffi-icu/break_iterator.rb

Constant Summary collapse

UBRK_DONE =
-1

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type, locale) ⇒ BreakIterator

Returns a new instance of BreakIterator.



13
14
15
16
17
# File 'lib/ffi-icu/break_iterator.rb', line 13

def initialize(type, locale)
  ptr = Lib.check_error { |err| Lib.ubrk_open(type, locale, nil, 0, err) }

  @iterator = FFI::AutoPointer.new(ptr, Lib.method(:ubrk_close))
end

Class Method Details

.available_localesObject



7
8
9
10
11
# File 'lib/ffi-icu/break_iterator.rb', line 7

def self.available_locales
  (0...Lib.ubrk_countAvailable).map do |idx|
    Lib.ubrk_getAvailable idx
  end
end

Instance Method Details

#boundary?(offset) ⇒ Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/ffi-icu/break_iterator.rb', line 64

def boundary?(offset)
  Lib.ubrk_isBoundary(@iterator, Integer(offset)) != 0
end

#currentObject



60
61
62
# File 'lib/ffi-icu/break_iterator.rb', line 60

def current
  Lib.ubrk_current @iterator
end

#each(&blk) ⇒ Object



25
26
27
28
29
30
31
32
33
34
# File 'lib/ffi-icu/break_iterator.rb', line 25

def each(&blk)
  return to_enum(:each) unless block_given?

  int = first

  while int != UBRK_DONE
    yield int
    int = self.next
  end
end

#firstObject



44
45
46
# File 'lib/ffi-icu/break_iterator.rb', line 44

def first
  Lib.ubrk_first @iterator
end

#following(offset) ⇒ Object



56
57
58
# File 'lib/ffi-icu/break_iterator.rb', line 56

def following(offset)
  Lib.ubrk_following @iterator, Integer(offset)
end

#lastObject



48
49
50
# File 'lib/ffi-icu/break_iterator.rb', line 48

def last
  Lib.ubrk_last @iterator
end

#nextObject



36
37
38
# File 'lib/ffi-icu/break_iterator.rb', line 36

def next
  Lib.ubrk_next @iterator
end

#preceding(offset) ⇒ Object



52
53
54
# File 'lib/ffi-icu/break_iterator.rb', line 52

def preceding(offset)
  Lib.ubrk_preceding @iterator, Integer(offset)
end

#previousObject



40
41
42
# File 'lib/ffi-icu/break_iterator.rb', line 40

def previous
  Lib.ubrk_next @iterator
end

#text=(str) ⇒ Object



19
20
21
22
23
# File 'lib/ffi-icu/break_iterator.rb', line 19

def text=(str)
  Lib.check_error { |err|
    Lib.ubrk_setText @iterator, UCharPointer.from_string(str), str.jlength, err
  }
end