stringio 0.1.4 → 3.0.2.pre1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -1
- data/ext/stringio/stringio.c +21 -64
- metadata +12 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 485b4a853f043d25f1c1a3ece1a7f1e8a1720ee7157bcde9df858ac0f9b61701
|
4
|
+
data.tar.gz: f6f24d32282461b5c3b97d1576a7a510def637d0c9dc98834876e5ecbd2792b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2c05da950d38ff21f3b4d4836be02dd7f9c479daff89fb648f84ccfb857a8611bfa2a0ab716f03316887790c70802d83b9a8867705b5aaddbadc9906f23b3a8
|
7
|
+
data.tar.gz: c9eb88894bc04413f3ed136b0d5801439913bc9721cf6e8daa5c77cdd118ea2aadab3830d0522949d1147294eda81db09f0e5a43d5ff68d5d49f37c8d305d532
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# StringIO
|
2
2
|
|
3
|
-
|
3
|
+
![ubuntu](https://github.com/ruby/stringio/workflows/ubuntu/badge.svg?branch=master&event=push)
|
4
|
+
![macos](https://github.com/ruby/stringio/workflows/macos/badge.svg?branch=master&event=push)
|
5
|
+
![windows](https://github.com/ruby/stringio/workflows/windows/badge.svg?branch=master&event=push)
|
4
6
|
|
5
7
|
Pseudo `IO` class from/to `String`.
|
6
8
|
|
data/ext/stringio/stringio.c
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
/* -*- mode: c; indent-tabs-mode: t -*- */
|
1
2
|
/**********************************************************************
|
2
3
|
|
3
4
|
stringio.c -
|
@@ -11,7 +12,7 @@
|
|
11
12
|
|
12
13
|
**********************************************************************/
|
13
14
|
|
14
|
-
#define STRINGIO_VERSION "0.
|
15
|
+
#define STRINGIO_VERSION "3.0.2.pre1"
|
15
16
|
|
16
17
|
#include "ruby.h"
|
17
18
|
#include "ruby/io.h"
|
@@ -64,7 +65,7 @@ strio_extract_modeenc(VALUE *vmode_p, VALUE *vperm_p, VALUE opthash,
|
|
64
65
|
n = strchr(n, '|');
|
65
66
|
}
|
66
67
|
e = strchr(++n, ':');
|
67
|
-
len = e ? e - n : strlen(n);
|
68
|
+
len = e ? e - n : (long)strlen(n);
|
68
69
|
if (len > 0 && len <= ENCODING_MAXNAMELEN) {
|
69
70
|
if (e) {
|
70
71
|
memcpy(encname, n, len);
|
@@ -599,6 +600,14 @@ strio_closed_write(VALUE self)
|
|
599
600
|
return Qtrue;
|
600
601
|
}
|
601
602
|
|
603
|
+
static struct StringIO *
|
604
|
+
strio_to_read(VALUE self)
|
605
|
+
{
|
606
|
+
struct StringIO *ptr = readable(self);
|
607
|
+
if (ptr->pos < RSTRING_LEN(ptr->string)) return ptr;
|
608
|
+
return NULL;
|
609
|
+
}
|
610
|
+
|
602
611
|
/*
|
603
612
|
* call-seq:
|
604
613
|
* strio.eof -> true or false
|
@@ -610,8 +619,7 @@ strio_closed_write(VALUE self)
|
|
610
619
|
static VALUE
|
611
620
|
strio_eof(VALUE self)
|
612
621
|
{
|
613
|
-
|
614
|
-
if (ptr->pos < RSTRING_LEN(ptr->string)) return Qfalse;
|
622
|
+
if (strio_to_read(self)) return Qfalse;
|
615
623
|
return Qtrue;
|
616
624
|
}
|
617
625
|
|
@@ -821,29 +829,17 @@ strio_get_sync(VALUE self)
|
|
821
829
|
static VALUE
|
822
830
|
strio_each_byte(VALUE self)
|
823
831
|
{
|
824
|
-
struct StringIO *ptr
|
832
|
+
struct StringIO *ptr;
|
825
833
|
|
826
834
|
RETURN_ENUMERATOR(self, 0, 0);
|
827
835
|
|
828
|
-
while (ptr
|
836
|
+
while ((ptr = strio_to_read(self)) != NULL) {
|
829
837
|
char c = RSTRING_PTR(ptr->string)[ptr->pos++];
|
830
838
|
rb_yield(CHR2FIX(c));
|
831
839
|
}
|
832
840
|
return self;
|
833
841
|
}
|
834
842
|
|
835
|
-
/*
|
836
|
-
* This is a deprecated alias for #each_byte.
|
837
|
-
*/
|
838
|
-
static VALUE
|
839
|
-
strio_bytes(VALUE self)
|
840
|
-
{
|
841
|
-
rb_warn("StringIO#bytes is deprecated; use #each_byte instead");
|
842
|
-
if (!rb_block_given_p())
|
843
|
-
return rb_enumeratorize(self, ID2SYM(rb_intern("each_byte")), 0, 0);
|
844
|
-
return strio_each_byte(self);
|
845
|
-
}
|
846
|
-
|
847
843
|
/*
|
848
844
|
* call-seq:
|
849
845
|
* strio.getc -> string or nil
|
@@ -1057,18 +1053,6 @@ strio_each_char(VALUE self)
|
|
1057
1053
|
return self;
|
1058
1054
|
}
|
1059
1055
|
|
1060
|
-
/*
|
1061
|
-
* This is a deprecated alias for #each_char.
|
1062
|
-
*/
|
1063
|
-
static VALUE
|
1064
|
-
strio_chars(VALUE self)
|
1065
|
-
{
|
1066
|
-
rb_warn("StringIO#chars is deprecated; use #each_char instead");
|
1067
|
-
if (!rb_block_given_p())
|
1068
|
-
return rb_enumeratorize(self, ID2SYM(rb_intern("each_char")), 0, 0);
|
1069
|
-
return strio_each_char(self);
|
1070
|
-
}
|
1071
|
-
|
1072
1056
|
/*
|
1073
1057
|
* call-seq:
|
1074
1058
|
* strio.each_codepoint {|c| block } -> strio
|
@@ -1088,11 +1072,7 @@ strio_each_codepoint(VALUE self)
|
|
1088
1072
|
|
1089
1073
|
ptr = readable(self);
|
1090
1074
|
enc = get_enc(ptr);
|
1091
|
-
|
1092
|
-
if (ptr->pos >= RSTRING_LEN(ptr->string)) {
|
1093
|
-
return self;
|
1094
|
-
}
|
1095
|
-
|
1075
|
+
while ((ptr = strio_to_read(self)) != NULL) {
|
1096
1076
|
c = rb_enc_codepoint_len(RSTRING_PTR(ptr->string)+ptr->pos,
|
1097
1077
|
RSTRING_END(ptr->string), &n, enc);
|
1098
1078
|
ptr->pos += n;
|
@@ -1101,18 +1081,6 @@ strio_each_codepoint(VALUE self)
|
|
1101
1081
|
return self;
|
1102
1082
|
}
|
1103
1083
|
|
1104
|
-
/*
|
1105
|
-
* This is a deprecated alias for #each_codepoint.
|
1106
|
-
*/
|
1107
|
-
static VALUE
|
1108
|
-
strio_codepoints(VALUE self)
|
1109
|
-
{
|
1110
|
-
rb_warn("StringIO#codepoints is deprecated; use #each_codepoint instead");
|
1111
|
-
if (!rb_block_given_p())
|
1112
|
-
return rb_enumeratorize(self, ID2SYM(rb_intern("each_codepoint")), 0, 0);
|
1113
|
-
return strio_each_codepoint(self);
|
1114
|
-
}
|
1115
|
-
|
1116
1084
|
/* Boyer-Moore search: copied from regex.c */
|
1117
1085
|
static void
|
1118
1086
|
bm_init_skip(long *skip, const char *pat, long m)
|
@@ -1363,18 +1331,6 @@ strio_each(int argc, VALUE *argv, VALUE self)
|
|
1363
1331
|
return self;
|
1364
1332
|
}
|
1365
1333
|
|
1366
|
-
/*
|
1367
|
-
* This is a deprecated alias for #each_line.
|
1368
|
-
*/
|
1369
|
-
static VALUE
|
1370
|
-
strio_lines(int argc, VALUE *argv, VALUE self)
|
1371
|
-
{
|
1372
|
-
rb_warn("StringIO#lines is deprecated; use #each_line instead");
|
1373
|
-
if (!rb_block_given_p())
|
1374
|
-
return rb_enumeratorize(self, ID2SYM(rb_intern("each_line")), argc, argv);
|
1375
|
-
return strio_each(argc, argv, self);
|
1376
|
-
}
|
1377
|
-
|
1378
1334
|
/*
|
1379
1335
|
* call-seq:
|
1380
1336
|
* strio.readlines(sep=$/, chomp: false) -> array
|
@@ -1798,7 +1754,12 @@ void
|
|
1798
1754
|
Init_stringio(void)
|
1799
1755
|
{
|
1800
1756
|
#undef rb_intern
|
1801
|
-
|
1757
|
+
|
1758
|
+
#ifdef HAVE_RB_EXT_RACTOR_SAFE
|
1759
|
+
rb_ext_ractor_safe(true);
|
1760
|
+
#endif
|
1761
|
+
|
1762
|
+
VALUE StringIO = rb_define_class("StringIO", rb_cObject);
|
1802
1763
|
|
1803
1764
|
rb_define_const(StringIO, "VERSION", rb_str_new_cstr(STRINGIO_VERSION));
|
1804
1765
|
|
@@ -1843,13 +1804,9 @@ Init_stringio(void)
|
|
1843
1804
|
|
1844
1805
|
rb_define_method(StringIO, "each", strio_each, -1);
|
1845
1806
|
rb_define_method(StringIO, "each_line", strio_each, -1);
|
1846
|
-
rb_define_method(StringIO, "lines", strio_lines, -1);
|
1847
1807
|
rb_define_method(StringIO, "each_byte", strio_each_byte, 0);
|
1848
|
-
rb_define_method(StringIO, "bytes", strio_bytes, 0);
|
1849
1808
|
rb_define_method(StringIO, "each_char", strio_each_char, 0);
|
1850
|
-
rb_define_method(StringIO, "chars", strio_chars, 0);
|
1851
1809
|
rb_define_method(StringIO, "each_codepoint", strio_each_codepoint, 0);
|
1852
|
-
rb_define_method(StringIO, "codepoints", strio_codepoints, 0);
|
1853
1810
|
rb_define_method(StringIO, "getc", strio_getc, 0);
|
1854
1811
|
rb_define_method(StringIO, "ungetc", strio_ungetc, 1);
|
1855
1812
|
rb_define_method(StringIO, "ungetbyte", strio_ungetbyte, 1);
|
metadata
CHANGED
@@ -1,31 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stringio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 3.0.2.pre1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nobu Nakada
|
8
|
-
|
8
|
+
- Charles Oliver Nutter
|
9
|
+
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: rake-compiler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
12
|
+
date: 2022-04-15 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
27
14
|
description: Pseudo `IO` class from/to `String`.
|
28
|
-
email:
|
15
|
+
email:
|
16
|
+
- nobu@ruby-lang.org
|
17
|
+
- headius@headius.com
|
29
18
|
executables: []
|
30
19
|
extensions:
|
31
20
|
- ext/stringio/extconf.rb
|
@@ -36,9 +25,10 @@ files:
|
|
36
25
|
- ext/stringio/stringio.c
|
37
26
|
homepage: https://github.com/ruby/stringio
|
38
27
|
licenses:
|
28
|
+
- Ruby
|
39
29
|
- BSD-2-Clause
|
40
30
|
metadata: {}
|
41
|
-
post_install_message:
|
31
|
+
post_install_message:
|
42
32
|
rdoc_options: []
|
43
33
|
require_paths:
|
44
34
|
- lib
|
@@ -53,8 +43,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
53
43
|
- !ruby/object:Gem::Version
|
54
44
|
version: '2.6'
|
55
45
|
requirements: []
|
56
|
-
rubygems_version: 3.
|
57
|
-
signing_key:
|
46
|
+
rubygems_version: 3.3.7
|
47
|
+
signing_key:
|
58
48
|
specification_version: 4
|
59
49
|
summary: Pseudo IO on String
|
60
50
|
test_files: []
|