summaryrefslogtreecommitdiff
path: root/doc/stringio/each_codepoint.rdoc
blob: ede16de599cf0c857214c503d28e63c150d5f64b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
With a block given, calls the block with each successive codepoint from self;
sets the position to end-of-stream;
returns +self+.

Each codepoint is the integer value for a character; returns self:

  codepoints = []
  strio = StringIO.new('hello')
  strio.each_codepoint {|codepoint| codepoints.push(codepoint) }
  strio.eof? # => true
  codepoints # => [104, 101, 108, 108, 111]
  codepoints = []
  strio = StringIO.new('тест')
  strio.each_codepoint {|codepoint| codepoints.push(codepoint) }
  codepoints # => [1090, 1077, 1089, 1090]
  codepoints = []
  strio = StringIO.new('こんにちは')
  strio.each_codepoint {|codepoint| codepoints.push(codepoint) }
  codepoints # => [12371, 12435, 12395, 12385, 12399]

Position in the stream matters:

  codepoints = []
  strio = StringIO.new('こんにちは')
  strio.getc # => "こ"
  strio.pos  # => 3
  strio.each_codepoint {|codepoint| codepoints.push(codepoint) }
  codepoints # => [12435, 12395, 12385, 12399]

When at end-of-stream, the block is not called:

  strio.eof? # => true
  strio.each_codepoint {|codepoint| fail 'Boo!' }
  strio.eof? # => true

With no block given, returns a new {Enumerator}[rdoc-ref:Enumerator].