ruby/doc/stringio/each_codepoint.rdoc
Nobuyoshi Nakada 0f5c69b317 [DOC] Moved non ASCII documents to separated files
C99 does not declare ways to designate the charset encoding of the
source file.  We can assume just US-ASCII characters will be safe.
2025-10-28 13:07:59 +09:00

37 lines
1.2 KiB
Plaintext

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].