stringio 3.0.4 → 3.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/ext/stringio/stringio.c +34 -38
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 33cdb98e67de55576e5f0f3ab5d77db8cd85a1b78287ab4533bee4c28782618a
|
4
|
+
data.tar.gz: a49ad49fe395ffd92fbd1dcf94be2b932ae7fc225905b83c1b22e4ead26c90fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd54ab4876d5d4a74854dc1fc649b4fcef93775cc043e7c4bb8dea1f8fd1ebc0f80106e16488806167e5dda6577c2e017535200f93f0fac7e9af356cfa927b14
|
7
|
+
data.tar.gz: 6a1a2425eaa1d105955c140ee4c6457dec97605e3b0b1583fd4d3061f7a92ee4ce106d7654bd758934ad5e42d17dc0862f9bf77abf97f575853ba5454fdad19f
|
data/README.md
CHANGED
@@ -12,6 +12,7 @@ This library is based on MoonWolf version written in Ruby. Thanks a lot.
|
|
12
12
|
|
13
13
|
* `fileno` raises `NotImplementedError`.
|
14
14
|
* encoding conversion is not implemented, and ignored silently.
|
15
|
+
* there is no `#to_io` method because this is not an `IO.
|
15
16
|
|
16
17
|
## Installation
|
17
18
|
|
@@ -31,7 +32,7 @@ Or install it yourself as:
|
|
31
32
|
|
32
33
|
## Development
|
33
34
|
|
34
|
-
|
35
|
+
Run `bundle install` to install dependencies and then `bundle exec rake test` to run the tests.
|
35
36
|
|
36
37
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
37
38
|
|
data/ext/stringio/stringio.c
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
**********************************************************************/
|
14
14
|
|
15
|
-
#define STRINGIO_VERSION "3.0.
|
15
|
+
#define STRINGIO_VERSION "3.0.6"
|
16
16
|
|
17
17
|
#include "ruby.h"
|
18
18
|
#include "ruby/io.h"
|
@@ -171,7 +171,7 @@ static const rb_data_type_t strio_data_type = {
|
|
171
171
|
strio_free,
|
172
172
|
strio_memsize,
|
173
173
|
},
|
174
|
-
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
|
174
|
+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
|
175
175
|
};
|
176
176
|
|
177
177
|
#define check_strio(self) ((struct StringIO*)rb_check_typeddata((self), &strio_data_type))
|
@@ -263,7 +263,7 @@ strio_s_allocate(VALUE klass)
|
|
263
263
|
* Note that +mode+ defaults to <tt>'r'</tt> if +string+ is frozen.
|
264
264
|
*
|
265
265
|
* Returns a new \StringIO instance formed from +string+ and +mode+;
|
266
|
-
* see {Access Modes}[
|
266
|
+
* see {Access Modes}[rdoc-ref:File@Access+Modes]:
|
267
267
|
*
|
268
268
|
* strio = StringIO.new # => #<StringIO>
|
269
269
|
* strio.close
|
@@ -379,7 +379,7 @@ strio_init(int argc, VALUE *argv, struct StringIO *ptr, VALUE self)
|
|
379
379
|
if (ptr->flags & FMODE_TRUNC) {
|
380
380
|
rb_str_resize(string, 0);
|
381
381
|
}
|
382
|
-
ptr->string
|
382
|
+
RB_OBJ_WRITE(self, &ptr->string, string);
|
383
383
|
if (argc == 1) {
|
384
384
|
ptr->enc = rb_enc_get(string);
|
385
385
|
}
|
@@ -397,7 +397,7 @@ static VALUE
|
|
397
397
|
strio_finalize(VALUE self)
|
398
398
|
{
|
399
399
|
struct StringIO *ptr = StringIO(self);
|
400
|
-
ptr->string
|
400
|
+
RB_OBJ_WRITE(self, &ptr->string, Qnil);
|
401
401
|
ptr->flags &= ~FMODE_READWRITE;
|
402
402
|
return self;
|
403
403
|
}
|
@@ -409,7 +409,7 @@ strio_finalize(VALUE self)
|
|
409
409
|
* Note that +mode+ defaults to <tt>'r'</tt> if +string+ is frozen.
|
410
410
|
*
|
411
411
|
* Creates a new \StringIO instance formed from +string+ and +mode+;
|
412
|
-
* see {Access Modes}[
|
412
|
+
* see {Access Modes}[rdoc-ref:File@Access+Modes].
|
413
413
|
*
|
414
414
|
* With no block, returns the new instance:
|
415
415
|
*
|
@@ -563,7 +563,8 @@ strio_set_string(VALUE self, VALUE string)
|
|
563
563
|
ptr->flags = OBJ_FROZEN(string) ? FMODE_READABLE : FMODE_READWRITE;
|
564
564
|
ptr->pos = 0;
|
565
565
|
ptr->lineno = 0;
|
566
|
-
|
566
|
+
RB_OBJ_WRITE(self, &ptr->string, string);
|
567
|
+
return string;
|
567
568
|
}
|
568
569
|
|
569
570
|
/*
|
@@ -682,11 +683,9 @@ strio_to_read(VALUE self)
|
|
682
683
|
* eof? -> true or false
|
683
684
|
*
|
684
685
|
* Returns +true+ if positioned at end-of-stream, +false+ otherwise;
|
685
|
-
* see {Position}[
|
686
|
+
* see {Position}[rdoc-ref:File@Position].
|
686
687
|
*
|
687
688
|
* Raises IOError if the stream is not opened for reading.
|
688
|
-
*
|
689
|
-
* StreamIO#eof is an alias for StreamIO#eof?.
|
690
689
|
*/
|
691
690
|
static VALUE
|
692
691
|
strio_eof(VALUE self)
|
@@ -719,7 +718,7 @@ strio_copy(VALUE copy, VALUE orig)
|
|
719
718
|
* lineno -> current_line_number
|
720
719
|
*
|
721
720
|
* Returns the current line number in +self+;
|
722
|
-
* see {Line Number}[
|
721
|
+
* see {Line Number}[rdoc-ref:IO@Line+Number].
|
723
722
|
*/
|
724
723
|
static VALUE
|
725
724
|
strio_get_lineno(VALUE self)
|
@@ -732,7 +731,7 @@ strio_get_lineno(VALUE self)
|
|
732
731
|
* lineno = new_line_number -> new_line_number
|
733
732
|
*
|
734
733
|
* Sets the current line number in +self+ to the given +new_line_number+;
|
735
|
-
* see {Line Number}[
|
734
|
+
* see {Line Number}[rdoc-ref:IO@Line+Number].
|
736
735
|
*/
|
737
736
|
static VALUE
|
738
737
|
strio_set_lineno(VALUE self, VALUE lineno)
|
@@ -746,7 +745,7 @@ strio_set_lineno(VALUE self, VALUE lineno)
|
|
746
745
|
* binmode -> self
|
747
746
|
*
|
748
747
|
* Sets the data mode in +self+ to binary mode;
|
749
|
-
* see {Data Mode}[
|
748
|
+
* see {Data Mode}[rdoc-ref:File@Data+Mode].
|
750
749
|
*
|
751
750
|
*/
|
752
751
|
static VALUE
|
@@ -807,9 +806,7 @@ strio_reopen(int argc, VALUE *argv, VALUE self)
|
|
807
806
|
* pos -> stream_position
|
808
807
|
*
|
809
808
|
* Returns the current position (in bytes);
|
810
|
-
* see {Position}[
|
811
|
-
*
|
812
|
-
* StringIO#tell is an alias for StringIO#pos.
|
809
|
+
* see {Position}[rdoc-ref:IO@Position].
|
813
810
|
*/
|
814
811
|
static VALUE
|
815
812
|
strio_get_pos(VALUE self)
|
@@ -822,7 +819,7 @@ strio_get_pos(VALUE self)
|
|
822
819
|
* pos = new_position -> new_position
|
823
820
|
*
|
824
821
|
* Sets the current position (in bytes);
|
825
|
-
* see {Position}[
|
822
|
+
* see {Position}[rdoc-ref:IO@Position].
|
826
823
|
*/
|
827
824
|
static VALUE
|
828
825
|
strio_set_pos(VALUE self, VALUE pos)
|
@@ -841,8 +838,8 @@ strio_set_pos(VALUE self, VALUE pos)
|
|
841
838
|
* rewind -> 0
|
842
839
|
*
|
843
840
|
* Sets the current position and line number to zero;
|
844
|
-
* see {Position}[
|
845
|
-
* and {Line Number}[
|
841
|
+
* see {Position}[rdoc-ref:IO@Position]
|
842
|
+
* and {Line Number}[rdoc-ref:IO@Line+Number].
|
846
843
|
*/
|
847
844
|
static VALUE
|
848
845
|
strio_rewind(VALUE self)
|
@@ -859,7 +856,7 @@ strio_rewind(VALUE self)
|
|
859
856
|
*
|
860
857
|
* Sets the current position to the given integer +offset+ (in bytes),
|
861
858
|
* with respect to a given constant +whence+;
|
862
|
-
* see {Position}[
|
859
|
+
* see {Position}[rdoc-ref:IO@Position].
|
863
860
|
*/
|
864
861
|
static VALUE
|
865
862
|
strio_seek(int argc, VALUE *argv, VALUE self)
|
@@ -915,7 +912,7 @@ strio_get_sync(VALUE self)
|
|
915
912
|
* each_byte {|byte| ... } -> self
|
916
913
|
*
|
917
914
|
* With a block given, calls the block with each remaining byte in the stream;
|
918
|
-
* see {Byte IO}[
|
915
|
+
* see {Byte IO}[rdoc-ref:IO@Byte+IO].
|
919
916
|
*
|
920
917
|
* With no block given, returns an enumerator.
|
921
918
|
*/
|
@@ -938,7 +935,7 @@ strio_each_byte(VALUE self)
|
|
938
935
|
* getc -> character or nil
|
939
936
|
*
|
940
937
|
* Reads and returns the next character from the stream;
|
941
|
-
* see {Character IO}[
|
938
|
+
* see {Character IO}[rdoc-ref:IO@Character+IO].
|
942
939
|
*/
|
943
940
|
static VALUE
|
944
941
|
strio_getc(VALUE self)
|
@@ -964,7 +961,7 @@ strio_getc(VALUE self)
|
|
964
961
|
* getbyte -> byte or nil
|
965
962
|
*
|
966
963
|
* Reads and returns the next 8-bit byte from the stream;
|
967
|
-
* see {Byte IO}[
|
964
|
+
* see {Byte IO}[rdoc-ref:IO@Byte+IO].
|
968
965
|
*/
|
969
966
|
static VALUE
|
970
967
|
strio_getbyte(VALUE self)
|
@@ -1003,7 +1000,7 @@ strio_extend(struct StringIO *ptr, long pos, long len)
|
|
1003
1000
|
* ungetc(character) -> nil
|
1004
1001
|
*
|
1005
1002
|
* Pushes back ("unshifts") a character or integer onto the stream;
|
1006
|
-
* see {Character IO}[
|
1003
|
+
* see {Character IO}[rdoc-ref:IO@Character+IO].
|
1007
1004
|
*/
|
1008
1005
|
static VALUE
|
1009
1006
|
strio_ungetc(VALUE self, VALUE c)
|
@@ -1041,7 +1038,7 @@ strio_ungetc(VALUE self, VALUE c)
|
|
1041
1038
|
* ungetbyte(byte) -> nil
|
1042
1039
|
*
|
1043
1040
|
* Pushes back ("unshifts") an 8-bit byte onto the stream;
|
1044
|
-
* see {Byte IO}[
|
1041
|
+
* see {Byte IO}[rdoc-ref:IO@Byte+IO].
|
1045
1042
|
*/
|
1046
1043
|
static VALUE
|
1047
1044
|
strio_ungetbyte(VALUE self, VALUE c)
|
@@ -1104,7 +1101,7 @@ strio_unget_bytes(struct StringIO *ptr, const char *cp, long cl)
|
|
1104
1101
|
* readchar -> string
|
1105
1102
|
*
|
1106
1103
|
* Like +getc+, but raises an exception if already at end-of-stream;
|
1107
|
-
* see {Character IO}[
|
1104
|
+
* see {Character IO}[rdoc-ref:IO@Character+IO].
|
1108
1105
|
*/
|
1109
1106
|
static VALUE
|
1110
1107
|
strio_readchar(VALUE self)
|
@@ -1119,7 +1116,7 @@ strio_readchar(VALUE self)
|
|
1119
1116
|
* readbyte -> byte
|
1120
1117
|
*
|
1121
1118
|
* Like +getbyte+, but raises an exception if already at end-of-stream;
|
1122
|
-
* see {Byte IO}[
|
1119
|
+
* see {Byte IO}[rdoc-ref:IO@Byte+IO].
|
1123
1120
|
*/
|
1124
1121
|
static VALUE
|
1125
1122
|
strio_readbyte(VALUE self)
|
@@ -1134,7 +1131,7 @@ strio_readbyte(VALUE self)
|
|
1134
1131
|
* each_char {|c| ... } -> self
|
1135
1132
|
*
|
1136
1133
|
* With a block given, calls the block with each remaining character in the stream;
|
1137
|
-
* see {Character IO}[
|
1134
|
+
* see {Character IO}[rdoc-ref:IO@Character+IO].
|
1138
1135
|
*
|
1139
1136
|
* With no block given, returns an enumerator.
|
1140
1137
|
*/
|
@@ -1156,7 +1153,7 @@ strio_each_char(VALUE self)
|
|
1156
1153
|
* each_codepoint {|codepoint| ... } -> self
|
1157
1154
|
*
|
1158
1155
|
* With a block given, calls the block with each remaining codepoint in the stream;
|
1159
|
-
* see {Codepoint IO}[
|
1156
|
+
* see {Codepoint IO}[rdoc-ref:IO@Codepoint+IO].
|
1160
1157
|
*
|
1161
1158
|
* With no block given, returns an enumerator.
|
1162
1159
|
*/
|
@@ -1340,8 +1337,9 @@ strio_getline(struct getline_arg *arg, struct StringIO *ptr)
|
|
1340
1337
|
str = strio_substr(ptr, ptr->pos, e - s - w, enc);
|
1341
1338
|
}
|
1342
1339
|
else {
|
1343
|
-
if (n < e - s) {
|
1344
|
-
|
1340
|
+
if (n < e - s + arg->chomp) {
|
1341
|
+
/* unless chomping, RS at the end does not matter */
|
1342
|
+
if (e - s < 1024 || n == e - s) {
|
1345
1343
|
for (p = s; p + n <= e; ++p) {
|
1346
1344
|
if (MEMCMP(p, RSTRING_PTR(str), char, n) == 0) {
|
1347
1345
|
e = p + n;
|
@@ -1374,7 +1372,7 @@ strio_getline(struct getline_arg *arg, struct StringIO *ptr)
|
|
1374
1372
|
*
|
1375
1373
|
* Reads and returns a line from the stream;
|
1376
1374
|
* assigns the return value to <tt>$_</tt>;
|
1377
|
-
* see {Line IO}[
|
1375
|
+
* see {Line IO}[rdoc-ref:IO@Line+IO].
|
1378
1376
|
*/
|
1379
1377
|
static VALUE
|
1380
1378
|
strio_gets(int argc, VALUE *argv, VALUE self)
|
@@ -1399,7 +1397,7 @@ strio_gets(int argc, VALUE *argv, VALUE self)
|
|
1399
1397
|
* readline(sep, limit, chomp: false) -> string
|
1400
1398
|
*
|
1401
1399
|
* Reads a line as with IO#gets, but raises EOFError if already at end-of-file;
|
1402
|
-
* see {Line IO}[
|
1400
|
+
* see {Line IO}[rdoc-ref:IO@Line+IO].
|
1403
1401
|
*/
|
1404
1402
|
static VALUE
|
1405
1403
|
strio_readline(int argc, VALUE *argv, VALUE self)
|
@@ -1418,9 +1416,7 @@ strio_readline(int argc, VALUE *argv, VALUE self)
|
|
1418
1416
|
* Calls the block with each remaining line read from the stream;
|
1419
1417
|
* does nothing if already at end-of-file;
|
1420
1418
|
* returns +self+.
|
1421
|
-
* See {Line IO}[
|
1422
|
-
*
|
1423
|
-
* StringIO#each is an alias for StringIO#each_line.
|
1419
|
+
* See {Line IO}[rdoc-ref:IO@Line+IO].
|
1424
1420
|
*/
|
1425
1421
|
static VALUE
|
1426
1422
|
strio_each(int argc, VALUE *argv, VALUE self)
|
@@ -1849,8 +1845,8 @@ strio_set_encoding_by_bom(VALUE self)
|
|
1849
1845
|
|
1850
1846
|
/*
|
1851
1847
|
* \IO streams for strings, with access similar to
|
1852
|
-
* {IO}[
|
1853
|
-
* see {IO}[
|
1848
|
+
* {IO}[rdoc-ref:IO];
|
1849
|
+
* see {IO}[rdoc-ref:IO].
|
1854
1850
|
*
|
1855
1851
|
* === About the Examples
|
1856
1852
|
*
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stringio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nobu Nakada
|
8
8
|
- Charles Oliver Nutter
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-04-14 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Pseudo `IO` class from/to `String`.
|
15
15
|
email:
|
@@ -28,7 +28,7 @@ licenses:
|
|
28
28
|
- Ruby
|
29
29
|
- BSD-2-Clause
|
30
30
|
metadata: {}
|
31
|
-
post_install_message:
|
31
|
+
post_install_message:
|
32
32
|
rdoc_options: []
|
33
33
|
require_paths:
|
34
34
|
- lib
|
@@ -43,8 +43,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
43
43
|
- !ruby/object:Gem::Version
|
44
44
|
version: '2.6'
|
45
45
|
requirements: []
|
46
|
-
rubygems_version: 3.
|
47
|
-
signing_key:
|
46
|
+
rubygems_version: 3.4.10
|
47
|
+
signing_key:
|
48
48
|
specification_version: 4
|
49
49
|
summary: Pseudo IO on String
|
50
50
|
test_files: []
|