rubysl-stringio 1.0.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +5 -6
- data/lib/rubysl/stringio/stringio.rb +233 -103
- data/lib/rubysl/stringio/version.rb +1 -1
- data/rubysl-stringio.gemspec +1 -2
- metadata +24 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad4377f000371c4db7fcc555b58556ead4b61005
|
4
|
+
data.tar.gz: 2928739f7801ab5da1d9aee92165ef42c49ab5fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f31db2a4d211f5bd2c576ace419d0a5a79aa2537a3d01c499be3225308043a5b189db2f8c69fb76036bd7f8fc1b6e9808ace694e3f5196336e946d6867d441ac
|
7
|
+
data.tar.gz: 2f3fcf1b00557c2e78af268b8781adbbd3279c25af76d0d094147f3d25738cb4f28deda3e1a245cd6e994a173f62fe83947b21c16d97ab7747c999cbd8980f47
|
data/.travis.yml
CHANGED
@@ -1,6 +1,15 @@
|
|
1
|
+
class IO
|
2
|
+
module Writable
|
3
|
+
end
|
4
|
+
module Readable
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
1
8
|
class StringIO
|
2
9
|
|
3
10
|
include Enumerable
|
11
|
+
include IO::Writable
|
12
|
+
include IO::Readable
|
4
13
|
|
5
14
|
DEFAULT_RECORD_SEPARATOR = "\n" unless defined?(::DEFAULT_RECORD_SEPARATOR)
|
6
15
|
|
@@ -8,10 +17,11 @@ class StringIO
|
|
8
17
|
Undefined = Object.new
|
9
18
|
|
10
19
|
class Data
|
11
|
-
attr_accessor :string, :pos, :lineno
|
20
|
+
attr_accessor :string, :pos, :lineno, :encoding
|
12
21
|
|
13
22
|
def initialize(string)
|
14
23
|
@string = string
|
24
|
+
@encoding = string.encoding
|
15
25
|
@pos = @lineno = 0
|
16
26
|
end
|
17
27
|
end
|
@@ -31,9 +41,15 @@ class StringIO
|
|
31
41
|
|
32
42
|
attr_reader :__data__
|
33
43
|
|
34
|
-
def initialize(string=
|
35
|
-
string
|
36
|
-
|
44
|
+
def initialize(string=nil, mode=nil)
|
45
|
+
if string.nil?
|
46
|
+
@__data__ = Data.new ""
|
47
|
+
set_encoding(nil)
|
48
|
+
mode = IO::RDWR
|
49
|
+
else
|
50
|
+
string = Rubinius::Type.coerce_to string, String, :to_str
|
51
|
+
@__data__ = Data.new string
|
52
|
+
end
|
37
53
|
|
38
54
|
if mode
|
39
55
|
if mode.is_a?(Integer)
|
@@ -75,6 +91,20 @@ class StringIO
|
|
75
91
|
|
76
92
|
private :check_writable
|
77
93
|
|
94
|
+
def set_encoding(external, internal=nil, options=nil)
|
95
|
+
encoding = external || Encoding.default_external
|
96
|
+
@__data__.encoding = encoding
|
97
|
+
@__data__.string.force_encoding(encoding)
|
98
|
+
end
|
99
|
+
|
100
|
+
def external_encoding
|
101
|
+
@__data__.encoding
|
102
|
+
end
|
103
|
+
|
104
|
+
def internal_encoding
|
105
|
+
nil
|
106
|
+
end
|
107
|
+
|
78
108
|
def each_byte
|
79
109
|
return to_enum :each_byte unless block_given?
|
80
110
|
check_readable
|
@@ -95,26 +125,8 @@ class StringIO
|
|
95
125
|
|
96
126
|
def each_char
|
97
127
|
return to_enum :each_char unless block_given?
|
98
|
-
|
99
|
-
|
100
|
-
while c = read(1) do
|
101
|
-
n = c[0]
|
102
|
-
leftmost_zero_bit = lookup.find{|i| n[i].zero? }
|
103
|
-
case leftmost_zero_bit
|
104
|
-
when 7 # ASCII
|
105
|
-
yield c
|
106
|
-
when 6 # UTF 8 complementary characters
|
107
|
-
next # Encoding error, ignore
|
108
|
-
else
|
109
|
-
more = read(6-leftmost_zero_bit)
|
110
|
-
break unless more
|
111
|
-
yield c+more
|
112
|
-
end
|
113
|
-
end
|
114
|
-
else
|
115
|
-
while s = read(1)
|
116
|
-
yield s
|
117
|
-
end
|
128
|
+
while s = getc
|
129
|
+
yield s
|
118
130
|
end
|
119
131
|
|
120
132
|
self
|
@@ -122,11 +134,34 @@ class StringIO
|
|
122
134
|
|
123
135
|
alias_method :chars, :each_char
|
124
136
|
|
125
|
-
def
|
126
|
-
return to_enum :
|
137
|
+
def each_codepoint(&block)
|
138
|
+
return to_enum :each_codepoint unless block_given?
|
127
139
|
check_readable
|
128
140
|
|
129
|
-
|
141
|
+
d = @__data__
|
142
|
+
string = d.string
|
143
|
+
|
144
|
+
while d.pos < string.bytesize
|
145
|
+
char = string.chr_at d.pos
|
146
|
+
|
147
|
+
unless char
|
148
|
+
raise ArgumentError, "invalid byte sequence in #{d.encoding}"
|
149
|
+
end
|
150
|
+
|
151
|
+
d.pos += char.bytesize
|
152
|
+
yield char.ord
|
153
|
+
end
|
154
|
+
|
155
|
+
self
|
156
|
+
end
|
157
|
+
|
158
|
+
alias_method :codepoints, :each_codepoint
|
159
|
+
|
160
|
+
def each(sep=$/, limit=Undefined)
|
161
|
+
return to_enum :each, sep, limit unless block_given?
|
162
|
+
check_readable
|
163
|
+
|
164
|
+
while line = getline(true, sep, limit)
|
130
165
|
yield line
|
131
166
|
end
|
132
167
|
|
@@ -149,29 +184,35 @@ class StringIO
|
|
149
184
|
check_writable
|
150
185
|
|
151
186
|
str = String(str)
|
152
|
-
|
153
187
|
return 0 if str.empty?
|
154
188
|
|
155
189
|
d = @__data__
|
156
190
|
pos = d.pos
|
157
191
|
string = d.string
|
158
192
|
|
159
|
-
if @append || pos == string.
|
160
|
-
string
|
161
|
-
d.pos = string.
|
162
|
-
elsif pos > string.
|
163
|
-
|
164
|
-
string
|
165
|
-
|
193
|
+
if @append || pos == string.bytesize
|
194
|
+
string.byte_append str
|
195
|
+
d.pos = string.bytesize
|
196
|
+
elsif pos > string.bytesize
|
197
|
+
m = Rubinius::Mirror.reflect string
|
198
|
+
m.splice string.bytesize, 0, "\000" * (pos - string.bytesize)
|
199
|
+
string.byte_append str
|
200
|
+
d.pos = string.bytesize
|
166
201
|
else
|
167
|
-
string
|
168
|
-
|
202
|
+
stop = string.bytesize - pos
|
203
|
+
if str.bytesize < stop
|
204
|
+
stop = str.bytesize
|
205
|
+
end
|
206
|
+
m = Rubinius::Mirror.reflect string
|
207
|
+
m.splice pos, stop, str
|
208
|
+
d.pos += str.bytesize
|
169
209
|
string.taint if str.tainted?
|
170
210
|
end
|
171
211
|
|
172
|
-
|
212
|
+
str.bytesize
|
173
213
|
end
|
174
214
|
alias_method :syswrite, :write
|
215
|
+
alias_method :write_nonblock, :write
|
175
216
|
|
176
217
|
def close
|
177
218
|
raise IOError, "closed stream" if closed?
|
@@ -202,7 +243,7 @@ class StringIO
|
|
202
243
|
|
203
244
|
def eof?
|
204
245
|
d = @__data__
|
205
|
-
d.pos >= d.string.
|
246
|
+
d.pos >= d.string.bytesize
|
206
247
|
end
|
207
248
|
alias_method :eof, :eof?
|
208
249
|
|
@@ -226,8 +267,10 @@ class StringIO
|
|
226
267
|
check_readable
|
227
268
|
d = @__data__
|
228
269
|
|
229
|
-
|
230
|
-
|
270
|
+
return nil if eof?
|
271
|
+
|
272
|
+
char = d.string.find_character(d.pos)
|
273
|
+
d.pos += char.bytesize
|
231
274
|
char
|
232
275
|
end
|
233
276
|
|
@@ -242,10 +285,10 @@ class StringIO
|
|
242
285
|
byte
|
243
286
|
end
|
244
287
|
|
245
|
-
def gets(sep =
|
288
|
+
def gets(sep=$/, limit=Undefined)
|
246
289
|
check_readable
|
247
290
|
|
248
|
-
$_ = getline(sep)
|
291
|
+
$_ = getline(false, sep, limit)
|
249
292
|
end
|
250
293
|
|
251
294
|
def isatty
|
@@ -253,11 +296,6 @@ class StringIO
|
|
253
296
|
end
|
254
297
|
alias_method :tty?, :isatty
|
255
298
|
|
256
|
-
def length
|
257
|
-
@string.length
|
258
|
-
end
|
259
|
-
alias_method :size, :length
|
260
|
-
|
261
299
|
def lineno
|
262
300
|
@__data__.lineno
|
263
301
|
end
|
@@ -266,10 +304,6 @@ class StringIO
|
|
266
304
|
@__data__.lineno = line
|
267
305
|
end
|
268
306
|
|
269
|
-
def path
|
270
|
-
nil
|
271
|
-
end
|
272
|
-
|
273
307
|
def pid
|
274
308
|
nil
|
275
309
|
end
|
@@ -286,7 +320,6 @@ class StringIO
|
|
286
320
|
def print(*args)
|
287
321
|
check_writable
|
288
322
|
args << $_ if args.empty?
|
289
|
-
args.map! { |x| x.nil? ? "nil" : x }
|
290
323
|
write((args << $\).flatten.join)
|
291
324
|
nil
|
292
325
|
end
|
@@ -309,23 +342,26 @@ class StringIO
|
|
309
342
|
if obj.is_a?(String)
|
310
343
|
char = obj[0]
|
311
344
|
else
|
312
|
-
|
345
|
+
c = Rubinius::Type.coerce_to obj, Integer, :to_int
|
346
|
+
char = (c & 0xff).chr
|
313
347
|
end
|
314
348
|
|
315
349
|
d = @__data__
|
316
350
|
pos = d.pos
|
317
351
|
string = d.string
|
318
352
|
|
319
|
-
if @append || pos == string.
|
320
|
-
string
|
321
|
-
d.pos = string.
|
322
|
-
elsif pos > string.
|
323
|
-
|
324
|
-
string
|
325
|
-
|
353
|
+
if @append || pos == string.bytesize
|
354
|
+
string.byte_append char
|
355
|
+
d.pos = string.bytesize
|
356
|
+
elsif pos > string.bytesize
|
357
|
+
m = Rubinius::Mirror.reflect string
|
358
|
+
m.splice string.bytesize, 0, "\000" * (pos - string.bytesize)
|
359
|
+
string.byte_append char
|
360
|
+
d.pos = string.bytesize
|
326
361
|
else
|
327
|
-
|
328
|
-
|
362
|
+
m = Rubinius::Mirror.reflect string
|
363
|
+
m.splice pos, char.bytesize, char
|
364
|
+
d.pos += char.bytesize
|
329
365
|
end
|
330
366
|
|
331
367
|
obj
|
@@ -337,7 +373,7 @@ class StringIO
|
|
337
373
|
else
|
338
374
|
args.each do |arg|
|
339
375
|
if arg.nil?
|
340
|
-
line = "
|
376
|
+
line = ""
|
341
377
|
elsif Thread.guarding? arg
|
342
378
|
line = "[...]"
|
343
379
|
else
|
@@ -360,27 +396,43 @@ class StringIO
|
|
360
396
|
nil
|
361
397
|
end
|
362
398
|
|
363
|
-
def read(length
|
399
|
+
def read(length=nil, buffer=nil)
|
364
400
|
check_readable
|
365
401
|
d = @__data__
|
366
402
|
pos = d.pos
|
367
403
|
string = d.string
|
368
404
|
|
369
|
-
buffer = StringValue(buffer)
|
370
|
-
|
371
405
|
if length
|
372
|
-
return nil if eof?
|
373
406
|
length = Rubinius::Type.coerce_to length, Integer, :to_int
|
374
407
|
raise ArgumentError if length < 0
|
375
|
-
|
376
|
-
|
408
|
+
|
409
|
+
buffer = StringValue(buffer) if buffer
|
410
|
+
|
411
|
+
if eof?
|
412
|
+
buffer.clear if buffer
|
413
|
+
if length == 0
|
414
|
+
return "".force_encoding(Encoding::ASCII_8BIT)
|
415
|
+
else
|
416
|
+
return nil
|
417
|
+
end
|
418
|
+
end
|
419
|
+
|
420
|
+
str = string.byteslice(pos, length)
|
421
|
+
str.force_encoding Encoding::ASCII_8BIT
|
422
|
+
|
423
|
+
str = buffer.replace(str) if buffer
|
377
424
|
else
|
378
|
-
|
379
|
-
|
380
|
-
|
425
|
+
if eof?
|
426
|
+
buffer.clear if buffer
|
427
|
+
return "".force_encoding(Encoding::ASCII_8BIT)
|
428
|
+
end
|
429
|
+
|
430
|
+
str = string.byteslice(pos..-1)
|
431
|
+
buffer.replace str if buffer
|
381
432
|
end
|
382
433
|
|
383
|
-
|
434
|
+
d.pos += str.length
|
435
|
+
return str
|
384
436
|
end
|
385
437
|
|
386
438
|
def readchar
|
@@ -388,20 +440,22 @@ class StringIO
|
|
388
440
|
getc
|
389
441
|
end
|
390
442
|
|
391
|
-
|
443
|
+
def readbyte
|
444
|
+
readchar.getbyte(0)
|
445
|
+
end
|
392
446
|
|
393
|
-
def readline(sep
|
394
|
-
raise IO::EOFError, "end of file reached" if eof?
|
447
|
+
def readline(sep=$/, limit=Undefined)
|
395
448
|
check_readable
|
449
|
+
raise IO::EOFError, "end of file reached" if eof?
|
396
450
|
|
397
|
-
$_ = getline(sep)
|
451
|
+
$_ = getline(true, sep, limit)
|
398
452
|
end
|
399
453
|
|
400
|
-
def readlines(sep
|
454
|
+
def readlines(sep=$/, limit=Undefined)
|
401
455
|
check_readable
|
402
456
|
|
403
457
|
ary = []
|
404
|
-
while line = getline(sep)
|
458
|
+
while line = getline(true, sep, limit)
|
405
459
|
ary << line
|
406
460
|
end
|
407
461
|
|
@@ -437,7 +491,7 @@ class StringIO
|
|
437
491
|
when IO::SEEK_CUR
|
438
492
|
to += @__data__.pos
|
439
493
|
when IO::SEEK_END
|
440
|
-
to += @__data__.string.
|
494
|
+
to += @__data__.string.bytesize
|
441
495
|
when IO::SEEK_SET, nil
|
442
496
|
else
|
443
497
|
raise Errno::EINVAL, "invalid whence"
|
@@ -451,7 +505,7 @@ class StringIO
|
|
451
505
|
end
|
452
506
|
|
453
507
|
def size
|
454
|
-
@__data__.string.
|
508
|
+
@__data__.string.bytesize
|
455
509
|
end
|
456
510
|
alias_method :length, :size
|
457
511
|
|
@@ -476,10 +530,18 @@ class StringIO
|
|
476
530
|
|
477
531
|
def sysread(length=nil, buffer="")
|
478
532
|
str = read(length, buffer)
|
479
|
-
|
533
|
+
|
534
|
+
if str.nil?
|
535
|
+
buffer.clear
|
536
|
+
raise IO::EOFError, "end of file reached"
|
537
|
+
end
|
538
|
+
|
480
539
|
str
|
481
540
|
end
|
482
541
|
|
542
|
+
alias_method :readpartial, :sysread
|
543
|
+
alias_method :read_nonblock, :sysread
|
544
|
+
|
483
545
|
def tell
|
484
546
|
@__data__.pos
|
485
547
|
end
|
@@ -490,10 +552,10 @@ class StringIO
|
|
490
552
|
raise Errno::EINVAL, "negative length" if len < 0
|
491
553
|
string = @__data__.string
|
492
554
|
|
493
|
-
if len < string.
|
494
|
-
string[len..string.
|
555
|
+
if len < string.bytesize
|
556
|
+
string[len..string.bytesize] = ""
|
495
557
|
else
|
496
|
-
string << "\000" * (len - string.
|
558
|
+
string << "\000" * (len - string.bytesize)
|
497
559
|
end
|
498
560
|
return length
|
499
561
|
end
|
@@ -505,10 +567,14 @@ class StringIO
|
|
505
567
|
pos = d.pos
|
506
568
|
string = d.string
|
507
569
|
|
508
|
-
char
|
570
|
+
if char.kind_of? Integer
|
571
|
+
char = Rubinius::Type.coerce_to char, String, :chr
|
572
|
+
else
|
573
|
+
char = Rubinius::Type.coerce_to char, String, :to_str
|
574
|
+
end
|
509
575
|
|
510
|
-
if pos > string.
|
511
|
-
string[string.
|
576
|
+
if pos > string.bytesize
|
577
|
+
string[string.bytesize..pos] = "\000" * (pos - string.bytesize)
|
512
578
|
d.pos -= 1
|
513
579
|
string[d.pos] = char
|
514
580
|
elsif pos > 0
|
@@ -519,6 +585,45 @@ class StringIO
|
|
519
585
|
nil
|
520
586
|
end
|
521
587
|
|
588
|
+
def ungetbyte(bytes)
|
589
|
+
check_readable
|
590
|
+
|
591
|
+
return unless bytes
|
592
|
+
|
593
|
+
if bytes.kind_of? Fixnum
|
594
|
+
bytes = "" << bytes
|
595
|
+
else
|
596
|
+
bytes = StringValue(bytes)
|
597
|
+
return if bytes.bytesize == 0
|
598
|
+
end
|
599
|
+
|
600
|
+
d = @__data__
|
601
|
+
pos = d.pos
|
602
|
+
string = d.string
|
603
|
+
|
604
|
+
enc = string.encoding
|
605
|
+
|
606
|
+
if d.pos == 0
|
607
|
+
d.string = "#{bytes}#{string}"
|
608
|
+
else
|
609
|
+
size = bytes.bytesize
|
610
|
+
a = string.byteslice(0, pos - size) if size < pos
|
611
|
+
b = string.byteslice(pos..-1)
|
612
|
+
d.string = "#{a}#{bytes}#{b}"
|
613
|
+
d.pos = pos > size ? pos - size : 0
|
614
|
+
end
|
615
|
+
|
616
|
+
d.string.force_encoding enc
|
617
|
+
nil
|
618
|
+
end
|
619
|
+
|
620
|
+
def encode_with(coder)
|
621
|
+
end
|
622
|
+
|
623
|
+
def init_with(coder)
|
624
|
+
@__data__ = Data.new("")
|
625
|
+
end
|
626
|
+
|
522
627
|
def to_yaml_properties
|
523
628
|
[]
|
524
629
|
end
|
@@ -569,8 +674,21 @@ class StringIO
|
|
569
674
|
d.string.replace("") if (mode & IO::TRUNC) != 0
|
570
675
|
end
|
571
676
|
|
572
|
-
def getline(sep
|
573
|
-
|
677
|
+
def getline(arg_error, sep, limit)
|
678
|
+
if limit != Undefined
|
679
|
+
limit = Rubinius::Type.coerce_to limit, Fixnum, :to_int
|
680
|
+
sep = Rubinius::Type.coerce_to sep, String, :to_str if sep
|
681
|
+
else
|
682
|
+
limit = nil
|
683
|
+
|
684
|
+
unless sep == $/ or sep.nil?
|
685
|
+
osep = sep
|
686
|
+
sep = Rubinius::Type.check_convert_type sep, String, :to_str
|
687
|
+
limit = Rubinius::Type.coerce_to osep, Fixnum, :to_int unless sep
|
688
|
+
end
|
689
|
+
end
|
690
|
+
|
691
|
+
raise ArgumentError if arg_error and limit == 0
|
574
692
|
|
575
693
|
return nil if eof?
|
576
694
|
|
@@ -579,28 +697,40 @@ class StringIO
|
|
579
697
|
string = d.string
|
580
698
|
|
581
699
|
if sep.nil?
|
582
|
-
|
583
|
-
|
700
|
+
if limit
|
701
|
+
line = string.byteslice(pos, limit)
|
702
|
+
else
|
703
|
+
line = string.byteslice(pos, string.bytesize - pos)
|
704
|
+
end
|
705
|
+
d.pos += line.bytesize
|
584
706
|
elsif sep.empty?
|
585
|
-
if stop = string.
|
707
|
+
if stop = string.find_string("\n\n", pos)
|
586
708
|
stop += 2
|
587
|
-
line = string
|
588
|
-
while string
|
709
|
+
line = string.byteslice(pos, stop - pos)
|
710
|
+
while string.getbyte(stop) == 10
|
589
711
|
stop += 1
|
590
712
|
end
|
591
713
|
d.pos = stop
|
592
714
|
else
|
593
|
-
line = string
|
594
|
-
d.pos = string.
|
715
|
+
line = string.byteslice(pos, string.bytesize - pos)
|
716
|
+
d.pos = string.bytesize
|
595
717
|
end
|
596
718
|
else
|
597
|
-
if stop = string.
|
598
|
-
stop
|
599
|
-
|
719
|
+
if stop = string.find_string(sep, pos)
|
720
|
+
if limit && stop - pos >= limit
|
721
|
+
stop = pos + limit
|
722
|
+
else
|
723
|
+
stop += sep.bytesize
|
724
|
+
end
|
725
|
+
line = string.byteslice(pos, stop - pos)
|
600
726
|
d.pos = stop
|
601
727
|
else
|
602
|
-
|
603
|
-
|
728
|
+
if limit
|
729
|
+
line = string.byteslice(pos, limit)
|
730
|
+
else
|
731
|
+
line = string.byteslice(pos, string.bytesize - pos)
|
732
|
+
end
|
733
|
+
d.pos += line.bytesize
|
604
734
|
end
|
605
735
|
end
|
606
736
|
|
data/rubysl-stringio.gemspec
CHANGED
@@ -16,10 +16,9 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
17
|
spec.require_paths = ["lib"]
|
18
18
|
|
19
|
-
spec.required_ruby_version = "~>
|
19
|
+
spec.required_ruby_version = "~> 2.0"
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
22
|
spec.add_development_dependency "rake", "~> 10.0"
|
23
23
|
spec.add_development_dependency "mspec", "~> 1.5"
|
24
|
-
spec.add_development_dependency "rubysl-prettyprint", "~> 1.0"
|
25
24
|
end
|
metadata
CHANGED
@@ -1,71 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubysl-stringio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Shirai
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2013-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
|
-
version_requirements: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.3'
|
20
15
|
requirement: !ruby/object:Gem::Requirement
|
21
16
|
requirements:
|
22
|
-
- -
|
17
|
+
- - ~>
|
23
18
|
- !ruby/object:Gem::Version
|
24
19
|
version: '1.3'
|
25
|
-
prerelease: false
|
26
20
|
type: :development
|
27
|
-
|
28
|
-
name: rake
|
21
|
+
prerelease: false
|
29
22
|
version_requirements: !ruby/object:Gem::Requirement
|
30
23
|
requirements:
|
31
|
-
- -
|
24
|
+
- - ~>
|
32
25
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
34
29
|
requirement: !ruby/object:Gem::Requirement
|
35
30
|
requirements:
|
36
|
-
- -
|
31
|
+
- - ~>
|
37
32
|
- !ruby/object:Gem::Version
|
38
33
|
version: '10.0'
|
39
|
-
prerelease: false
|
40
34
|
type: :development
|
41
|
-
|
42
|
-
name: mspec
|
35
|
+
prerelease: false
|
43
36
|
version_requirements: !ruby/object:Gem::Requirement
|
44
37
|
requirements:
|
45
|
-
- -
|
38
|
+
- - ~>
|
46
39
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: mspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
44
|
requirements:
|
50
|
-
- -
|
45
|
+
- - ~>
|
51
46
|
- !ruby/object:Gem::Version
|
52
47
|
version: '1.5'
|
53
|
-
prerelease: false
|
54
48
|
type: :development
|
55
|
-
|
56
|
-
name: rubysl-prettyprint
|
49
|
+
prerelease: false
|
57
50
|
version_requirements: !ruby/object:Gem::Requirement
|
58
51
|
requirements:
|
59
|
-
- -
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '1.0'
|
62
|
-
requirement: !ruby/object:Gem::Requirement
|
63
|
-
requirements:
|
64
|
-
- - "~>"
|
52
|
+
- - ~>
|
65
53
|
- !ruby/object:Gem::Version
|
66
|
-
version: '1.
|
67
|
-
prerelease: false
|
68
|
-
type: :development
|
54
|
+
version: '1.5'
|
69
55
|
description: Ruby standard library stringio.
|
70
56
|
email:
|
71
57
|
- brixen@gmail.com
|
@@ -73,8 +59,8 @@ executables: []
|
|
73
59
|
extensions: []
|
74
60
|
extra_rdoc_files: []
|
75
61
|
files:
|
76
|
-
-
|
77
|
-
-
|
62
|
+
- .gitignore
|
63
|
+
- .travis.yml
|
78
64
|
- Gemfile
|
79
65
|
- LICENSE
|
80
66
|
- README.md
|
@@ -172,17 +158,17 @@ require_paths:
|
|
172
158
|
- lib
|
173
159
|
required_ruby_version: !ruby/object:Gem::Requirement
|
174
160
|
requirements:
|
175
|
-
- -
|
161
|
+
- - ~>
|
176
162
|
- !ruby/object:Gem::Version
|
177
|
-
version:
|
163
|
+
version: '2.0'
|
178
164
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
179
165
|
requirements:
|
180
|
-
- -
|
166
|
+
- - '>='
|
181
167
|
- !ruby/object:Gem::Version
|
182
168
|
version: '0'
|
183
169
|
requirements: []
|
184
170
|
rubyforge_project:
|
185
|
-
rubygems_version: 2.
|
171
|
+
rubygems_version: 2.0.7
|
186
172
|
signing_key:
|
187
173
|
specification_version: 4
|
188
174
|
summary: Ruby standard library stringio.
|
@@ -265,4 +251,3 @@ test_files:
|
|
265
251
|
- spec/ungetc_spec.rb
|
266
252
|
- spec/write_nonblock_spec.rb
|
267
253
|
- spec/write_spec.rb
|
268
|
-
has_rdoc:
|