From 2c363fff560f9f21ebb2eb664ff05a4db0384eda Mon Sep 17 00:00:00 2001 From: Jakub Jirutka Date: Tue, 19 Jun 2018 18:47:52 +0200 Subject: Change Resolver#read_file to accept block (breaking API change) The main reason for this change is to ensure that file is closed right after we're done with it, not after garbage collector comes in. Also IO.foreach is not supported by Opal. --- lib/asciidoctor/interdoc_reftext/resolver.rb | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'lib/asciidoctor/interdoc_reftext') diff --git a/lib/asciidoctor/interdoc_reftext/resolver.rb b/lib/asciidoctor/interdoc_reftext/resolver.rb index 0da8511..e4a8eef 100644 --- a/lib/asciidoctor/interdoc_reftext/resolver.rb +++ b/lib/asciidoctor/interdoc_reftext/resolver.rb @@ -48,8 +48,9 @@ module Asciidoctor::InterdocReftext path = resolve_target_path(path) or return nil @cache["#{path}##{fragment}".freeze] ||= begin - lines = read_file(path) or return nil - parse_reftext(lines, fragment) + read_file(path) do |lines| + parse_reftext(lines, fragment) + end rescue => e # rubocop: disable RescueWithoutErrorClass raise if @raise_exceptions @logger.error "interdoc-reftext: #{e}" @@ -93,9 +94,11 @@ module Asciidoctor::InterdocReftext end # @param path [String] path of the file to read. - # @return [Enumerable] lines of the file. + # @yield [Enumerable] gives lines of the file. def read_file(path) - ::IO.foreach(path) + ::File.open(path) do |f| + yield f.each_line + end end # @param input [Enumerable] lines of the AsciiDoc document. -- cgit v1.2.3