diff options
author | Jakub Jirutka <jakub@jirutka.cz> | 2018-06-19 18:47:52 +0200 |
---|---|---|
committer | Jakub Jirutka <jakub@jirutka.cz> | 2018-06-19 18:51:43 +0200 |
commit | 2c363fff560f9f21ebb2eb664ff05a4db0384eda (patch) | |
tree | 00af31da9c2901757fb6ab87e78ada2c6a8a93e3 | |
parent | 7af7b9cefd4087f944d0824bb76c2f75d081722b (diff) |
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.
-rw-r--r-- | lib/asciidoctor/interdoc_reftext/resolver.rb | 11 |
1 files changed, 7 insertions, 4 deletions
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<String>] lines of the file. + # @yield [Enumerable<String>] 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<String>] lines of the AsciiDoc document. |