stringio 3.0.7 → 3.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/stringio/stringio.c +44 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c0b0200f04117b73fd9c58628c8775de264092f0bf620e9275de965a9b5353d
|
4
|
+
data.tar.gz: 47864febb9b35c83ea281a4330222dbd73f9622d6218ec4ac208996b38a04efd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ee084ea64f8565fe66705103a9720f12fd6e0c23e3798705c5395157c0c04794e0b15c36c418e70a8ac3c0d95cb0bd3a0befee02d745b4c05d7938f7dcb28c8
|
7
|
+
data.tar.gz: 25bae0db02e6d737ab323f42c879e8b955ffc5fbf54c847f5cdb4b6fe6087932c8c63a34999fc72a9658acdaa0e53287459ea615fdbc16d169b247ace347827c
|
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.8"
|
16
16
|
|
17
17
|
#include "ruby.h"
|
18
18
|
#include "ruby/io.h"
|
@@ -1583,6 +1583,48 @@ strio_read(int argc, VALUE *argv, VALUE self)
|
|
1583
1583
|
return str;
|
1584
1584
|
}
|
1585
1585
|
|
1586
|
+
/*
|
1587
|
+
* call-seq:
|
1588
|
+
* pread(maxlen, offset) -> string
|
1589
|
+
* pread(maxlen, offset, out_string) -> string
|
1590
|
+
*
|
1591
|
+
* See IO#pread.
|
1592
|
+
*/
|
1593
|
+
static VALUE
|
1594
|
+
strio_pread(int argc, VALUE *argv, VALUE self)
|
1595
|
+
{
|
1596
|
+
VALUE rb_len, rb_offset, rb_buf;
|
1597
|
+
rb_scan_args(argc, argv, "21", &rb_len, &rb_offset, &rb_buf);
|
1598
|
+
long len = NUM2LONG(rb_len);
|
1599
|
+
long offset = NUM2LONG(rb_offset);
|
1600
|
+
|
1601
|
+
if (len < 0) {
|
1602
|
+
rb_raise(rb_eArgError, "negative string size (or size too big): %" PRIsVALUE, rb_len);
|
1603
|
+
}
|
1604
|
+
|
1605
|
+
if (offset < 0) {
|
1606
|
+
rb_syserr_fail_str(EINVAL, rb_sprintf("pread: Invalid offset argument: %" PRIsVALUE, rb_offset));
|
1607
|
+
}
|
1608
|
+
|
1609
|
+
struct StringIO *ptr = readable(self);
|
1610
|
+
|
1611
|
+
if (offset >= RSTRING_LEN(ptr->string)) {
|
1612
|
+
rb_eof_error();
|
1613
|
+
}
|
1614
|
+
|
1615
|
+
if (NIL_P(rb_buf)) {
|
1616
|
+
return strio_substr(ptr, offset, len, rb_ascii8bit_encoding());
|
1617
|
+
}
|
1618
|
+
|
1619
|
+
long rest = RSTRING_LEN(ptr->string) - offset;
|
1620
|
+
if (len > rest) len = rest;
|
1621
|
+
rb_str_resize(rb_buf, len);
|
1622
|
+
rb_enc_associate(rb_buf, rb_ascii8bit_encoding());
|
1623
|
+
MEMCPY(RSTRING_PTR(rb_buf), RSTRING_PTR(ptr->string) + offset, char, len);
|
1624
|
+
return rb_buf;
|
1625
|
+
}
|
1626
|
+
|
1627
|
+
|
1586
1628
|
/*
|
1587
1629
|
* call-seq:
|
1588
1630
|
* strio.sysread(integer[, outbuf]) -> string
|
@@ -1843,6 +1885,7 @@ Init_stringio(void)
|
|
1843
1885
|
rb_define_method(StringIO, "gets", strio_gets, -1);
|
1844
1886
|
rb_define_method(StringIO, "readlines", strio_readlines, -1);
|
1845
1887
|
rb_define_method(StringIO, "read", strio_read, -1);
|
1888
|
+
rb_define_method(StringIO, "pread", strio_pread, -1);
|
1846
1889
|
|
1847
1890
|
rb_define_method(StringIO, "write", strio_write_m, -1);
|
1848
1891
|
rb_define_method(StringIO, "putc", strio_putc, 1);
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nobu Nakada
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-
|
12
|
+
date: 2023-08-10 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Pseudo `IO` class from/to `String`.
|
15
15
|
email:
|
@@ -43,7 +43,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
43
43
|
- !ruby/object:Gem::Version
|
44
44
|
version: '0'
|
45
45
|
requirements: []
|
46
|
-
rubygems_version: 3.
|
46
|
+
rubygems_version: 3.4.10
|
47
47
|
signing_key:
|
48
48
|
specification_version: 4
|
49
49
|
summary: Pseudo IO on String
|