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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b6921e4d7b3812f5dbf37cabcbe0a2ee5bda9262
4
- data.tar.gz: 79fed2199276c855acdbb505f097c9354ae2a4d4
3
+ metadata.gz: ad4377f000371c4db7fcc555b58556ead4b61005
4
+ data.tar.gz: 2928739f7801ab5da1d9aee92165ef42c49ab5fb
5
5
  SHA512:
6
- metadata.gz: 346d375e8d4414ddb54329c5662e9f47de85a345f84af053fb2ed04e0477e2b4cf1564a1fbced171171edfc5d55eceb7b9f9c7b547fdaf8c60bdf41c3bffae96
7
- data.tar.gz: f99b75b501c6e292ac4cc14b7d88ea8bf9d860b8da2d18dc7c3dad096d3b9bb07fb5ba9d4419ac6f1b1e11e98ff3354f3e698202c77024db5872d30a69c2bb5b
6
+ metadata.gz: f31db2a4d211f5bd2c576ace419d0a5a79aa2537a3d01c499be3225308043a5b189db2f8c69fb76036bd7f8fc1b6e9808ace694e3f5196336e946d6867d441ac
7
+ data.tar.gz: 2f3fcf1b00557c2e78af268b8781adbbd3279c25af76d0d094147f3d25738cb4f28deda3e1a245cd6e994a173f62fe83947b21c16d97ab7747c999cbd8980f47
@@ -1,8 +1,7 @@
1
1
  language: ruby
2
- before_install:
3
- - gem update --system
4
- - gem --version
5
- - gem install rubysl-bundler
6
- script: bundle exec mspec spec
2
+ env:
3
+ - RUBYLIB=lib
4
+ script: bundle exec mspec
7
5
  rvm:
8
- - rbx-nightly-18mode
6
+ - 1.9.3
7
+ - rbx-nightly-19mode
@@ -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="", mode=nil)
35
- string = Rubinius::Type.coerce_to string, String, :to_str
36
- @__data__ = Data.new string
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
- if $KCODE == "UTF8"
99
- lookup = 7.downto(4)
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 each(sep = $/)
126
- return to_enum :each, sep unless block_given?
137
+ def each_codepoint(&block)
138
+ return to_enum :each_codepoint unless block_given?
127
139
  check_readable
128
140
 
129
- while line = getline(sep)
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.length
160
- string << str
161
- d.pos = string.length
162
- elsif pos > string.size
163
- string[string.size..pos] = "\000" * (pos - string.size)
164
- string << str
165
- d.pos = string.size
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[pos, str.length] = str
168
- d.pos += str.length
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
- return str.length
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.size
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
- char = d.string[d.pos]
230
- d.pos += 1 unless eof?
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
- char = Rubinius::Type.coerce_to obj, Integer, :to_int
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.length
320
- string << char
321
- d.pos = string.length
322
- elsif pos > string.length
323
- string[string.length..pos] = "\000" * (pos - string.length)
324
- string << char
325
- d.pos = string.length
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
- string[pos] = char
328
- d.pos += 1
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 = "nil"
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 = nil, buffer = "")
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
- buffer.replace(string[pos, length])
376
- d.pos += buffer.length
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
- return "" if eof?
379
- buffer.replace(string[pos..-1])
380
- d.pos = string.size
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
- return buffer
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
- alias_method :readbyte, :readchar
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.size
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.size
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
- raise IO::EOFError, "end of file reached" if str.nil?
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.size
494
- string[len..string.size] = ""
555
+ if len < string.bytesize
556
+ string[len..string.bytesize] = ""
495
557
  else
496
- string << "\000" * (len - string.size)
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 = Rubinius::Type.coerce_to char, Integer, :to_int
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.size
511
- string[string.size..pos] = "\000" * (pos - string.size)
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
- sep = StringValue(sep) unless sep.nil?
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
- line = string[pos..-1]
583
- d.pos = string.size
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.index("\n\n", pos)
707
+ if stop = string.find_string("\n\n", pos)
586
708
  stop += 2
587
- line = string[pos...stop]
588
- while string[stop] == ?\n
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[pos..-1]
594
- d.pos = string.size
715
+ line = string.byteslice(pos, string.bytesize - pos)
716
+ d.pos = string.bytesize
595
717
  end
596
718
  else
597
- if stop = string.index(sep, pos)
598
- stop += sep.length
599
- line = string[pos...stop]
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
- line = string[pos..-1]
603
- d.pos = string.size
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
 
@@ -1,5 +1,5 @@
1
1
  module RubySL
2
2
  module StringIO
3
- VERSION = "1.0.1"
3
+ VERSION = "2.0.0"
4
4
  end
5
5
  end
@@ -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 = "~> 1.8.7"
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: 1.0.1
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: 2014-03-16 00:00:00.000000000 Z
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
- - !ruby/object:Gem::Dependency
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: '10.0'
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
- - !ruby/object:Gem::Dependency
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: '1.5'
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
- - !ruby/object:Gem::Dependency
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.0'
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
- - ".gitignore"
77
- - ".travis.yml"
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: 1.8.7
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.2.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: