From 27631bab41c70242e17ffb7e5ad6ecd20067b518 Mon Sep 17 00:00:00 2001 From: Florian Dejonckheere Date: Mon, 25 Mar 2024 10:49:43 +0200 Subject: [PATCH] --wip-- [skip ci] --- lib/polyphony/extensions/io.rb | 8 ++++++-- test/test_io.rb | 14 ++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/polyphony/extensions/io.rb b/lib/polyphony/extensions/io.rb index f980ce5..b3f6dce 100644 --- a/lib/polyphony/extensions/io.rb +++ b/lib/polyphony/extensions/io.rb @@ -60,9 +60,13 @@ def read(name, length = nil, offset = nil, opt = EMPTY_HASH) end alias_method :orig_readlines, :readlines - def readlines(name, sep = $/, limit = nil, getline_args = EMPTY_HASH, chomp: false) + def readlines(name, sep = $/, limit = nil, **getline_args) + if sep.is_a?(Integer) + sep = $/ + limit = sep + end File.open(name, 'r') do |f| - f.readlines(sep, limit, chomp: chomp, **getline_args) + f.readlines(sep, limit, **getline_args) end end diff --git a/test/test_io.rb b/test/test_io.rb index 43904ed..36604be 100644 --- a/test/test_io.rb +++ b/test/test_io.rb @@ -709,6 +709,7 @@ def test_read_class_method end def test_readlines + # No arguments lines = IO.readlines(__FILE__) assert_equal "# frozen_string_literal: true\n", lines[0] assert_equal "end\n", lines[-1] @@ -716,17 +717,26 @@ def test_readlines lines = IO.readlines(__FILE__, chomp: true) assert_equal "# frozen_string_literal: true", lines[0] + # Separator as argument lines = IO.readlines(__FILE__, ":") assert_equal "# frozen_string_literal:", lines[0] lines = IO.readlines(__FILE__, ":", chomp: true) assert_equal "# frozen_string_literal", lines[0] - lines = IO.readlines(__FILE__, $/, 30) + # Limit as argument + lines = IO.readlines(__FILE__, 30) assert_equal "# frozen_string_literal: true\n", lines[0] - lines = IO.readlines(__FILE__, $/, 30, chomp: true) + lines = IO.readlines(__FILE__, 30, chomp: true) assert_equal "# frozen_string_literal: true", lines[0] + + # Separator and limit as argument + lines = IO.readlines(__FILE__, ":", 23) + assert_equal "# frozen_string_literal:", lines[0] + + lines = IO.readlines(__FILE__, ":", 23, chomp: true) + assert_equal "# frozen_string_literal", lines[0] end WRITE_DATA = "foo\nbar קוקו"