filter_io 0.2.8 → 0.2.9

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
- SHA1:
3
- metadata.gz: fc38739abd36195531c35e95d911431541316712
4
- data.tar.gz: 88e785cac1212c8993ef66718f169042f6abea69
2
+ SHA256:
3
+ metadata.gz: ced2c65cffd42c6978d3baef95fafe4ce41a6442d8d68e8a5743af02bf9ed4bf
4
+ data.tar.gz: 742d007fdb81e2bfa1bf9276748b66f36284a4147242fa1843a7022be8bd65a5
5
5
  SHA512:
6
- metadata.gz: fdcc4feed07d99daac57cc8cb272673025e5bd6b1cf5f6c227e565fbd9cb87f6c283c7dce6cf102a8f7640dcfccf9f7c7fb6f315bc888f13faa5f22c60b7f5b8
7
- data.tar.gz: f9fe882d09ca94f3183c00551fd6596915683adfd2d699cce6a5eb612276da428e36d9c5a85b70053e3991cfbfe6f7999ca2c35db6bca31572cd38b1c3847a1f
6
+ metadata.gz: d470cdb65d41eb4c18921df0438b5fe4c43098c7ecb2c581200aa7180cba27269df31da29a99c9d6cce94727410ee05381b0fce263d2ad970b7af9a817ed49fa
7
+ data.tar.gz: 8cc94e7348e0abfac77832599bec162f95c37e4c10a155c0ecce27b2454400bbc2cc953e5152490bb7ed3b8e659cd221aca4b844a48333016acf8c33fc75fe6e
data/README.markdown CHANGED
@@ -93,7 +93,7 @@ When either `readline`, `gets` or `read(nil)` is called, `filter_io` will proces
93
93
 
94
94
  Ruby 1.9 has character encoding support can convert between UTF-8, ISO-8859-1, ASCII-8BIT, etc. This is triggered in `IO` by using `:external_encoding` and `:internal_encoding` when opening the stream.
95
95
  `filter_io` will use the underlying stream's encoding settings when reading and filtering data. The processing block will be passed data in the internal encoding.
96
- As per the core `IO` object, if `read` is called with a length (in bytes), the data will be returned in the external encoding.
96
+ As per the core `IO` object, if `read` is called with a length (in bytes), the data will be returned in ASCII-8BIT.
97
97
  In summary, everything should Just Work™
98
98
 
99
99
  ### Notes on Patches/Pull Requests
data/filter_io.gemspec CHANGED
@@ -17,8 +17,8 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ['lib']
19
19
 
20
- spec.add_development_dependency 'bundler', '~> 1.3'
21
- spec.add_development_dependency 'rake'
20
+ spec.add_development_dependency 'bundler', '~> 2.0'
21
+ spec.add_development_dependency 'rake', '< 2'
22
22
  spec.add_development_dependency 'simplecov'
23
23
  spec.add_development_dependency 'rspec', '~> 2.13'
24
24
  spec.add_development_dependency 'pry'
data/lib/filter_io.rb CHANGED
@@ -188,12 +188,12 @@ class FilterIO
188
188
  raise ArgumentError
189
189
  end
190
190
 
191
+ return "" if limit == 0
191
192
  return nil if eof?
192
- return read if sep_string.nil?
193
193
 
194
194
  paragraph_mode = sep_string == ''
195
195
  sep_string = "\n\n" if paragraph_mode
196
- sep_string = sep_string.to_s unless sep_string.is_a? String
196
+ sep_string = sep_string&.to_s unless sep_string.is_a? String
197
197
 
198
198
  if paragraph_mode
199
199
  # consume any leading newlines
@@ -298,7 +298,7 @@ class FilterIO
298
298
 
299
299
  def find_bytes(str)
300
300
  with_byte_buffer do
301
- @buffer.index(str)
301
+ str && @buffer.index(str)
302
302
  end
303
303
  end
304
304
 
@@ -1,3 +1,3 @@
1
1
  class FilterIO
2
- VERSION = '0.2.8'
2
+ VERSION = '0.2.9'
3
3
  end
@@ -28,6 +28,8 @@ describe FilterIO do
28
28
  errors << [e.class, e.message]
29
29
  end
30
30
  positions << io.pos
31
+
32
+ break if results == [""] * 10 && errors == [nil] * 10 && positions == [0] * 10
31
33
  raise 'Too many iterations' if results.size > 100
32
34
  end
33
35
 
@@ -574,7 +576,7 @@ describe FilterIO do
574
576
  end
575
577
  end
576
578
 
577
- it 'supports `get` with a limit' do
579
+ it 'supports `gets` with a limit' do
578
580
  [
579
581
  "",
580
582
  "x",
@@ -582,11 +584,24 @@ describe FilterIO do
582
584
  "abc\rdef\rghi\r",
583
585
  "über",
584
586
  ].each do |input|
585
- [1, 2, 3, 4, 10].each do |limit|
587
+ [0, 1, 2, 3, 4, 10].each do |limit|
586
588
  matches_reference_io_behaviour(input) { |io| io.gets(limit) }
587
589
  end
588
590
  end
589
- # TODO: test zero limit
591
+ end
592
+
593
+ it 'supports `gets` with nil separator and a limit' do
594
+ [
595
+ "",
596
+ "x",
597
+ "foo\nbar\rbaz\n",
598
+ "abc\rdef\rghi\r",
599
+ "über",
600
+ ].each do |input|
601
+ [0, 1, 2, 3, 4, 10].each do |limit|
602
+ matches_reference_io_behaviour(input) { |io| io.gets(nil, limit) }
603
+ end
604
+ end
590
605
  end
591
606
 
592
607
  it 'supports `gets` with a separator and a limit' do
@@ -598,15 +613,14 @@ describe FilterIO do
598
613
  "über",
599
614
  ].each do |input|
600
615
  ["\r", "x"].each do |sep_string|
601
- [1, 2, 3, 4, 10].each do |limit|
616
+ [0, 1, 2, 3, 4, 10].each do |limit|
602
617
  matches_reference_io_behaviour(input) { |io| io.gets(sep_string, limit) }
603
618
  end
604
619
  end
605
620
  end
606
- # TODO: test zero limit
607
621
  end
608
622
 
609
- it 'errors when `get` is passed more than two args' do
623
+ it 'errors when `gets` is passed more than two args' do
610
624
  expect {
611
625
  FilterIO.new(StringIO.new).gets(1,2,3)
612
626
  }.to raise_error ArgumentError
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filter_io
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Weathered
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-19 00:00:00.000000000 Z
11
+ date: 2021-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
19
+ version: '2.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.3'
26
+ version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "<"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '2'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "<"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: simplecov
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -80,7 +80,7 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- description:
83
+ description:
84
84
  email:
85
85
  - jason@jasoncodes.com
86
86
  executables: []
@@ -101,7 +101,7 @@ homepage: http://github.com/jasoncodes/filter_io
101
101
  licenses:
102
102
  - MIT
103
103
  metadata: {}
104
- post_install_message:
104
+ post_install_message:
105
105
  rdoc_options: []
106
106
  require_paths:
107
107
  - lib
@@ -116,9 +116,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  requirements: []
119
- rubyforge_project:
120
- rubygems_version: 2.6.11
121
- signing_key:
119
+ rubygems_version: 3.1.6
120
+ signing_key:
122
121
  specification_version: 4
123
122
  summary: Filter IO streams with a block. Ruby's FilterInputStream.
124
123
  test_files: