From cbae9803e04f4f78997024cf959d3dcafe204ae9 Mon Sep 17 00:00:00 2001 From: dogatana Date: Sat, 3 Dec 2016 11:54:39 +0900 Subject: [PATCH 1/2] fix an issue that rdoc fails when running on Windows with RUBYOPT=-U - add rescue Encoding::InvalidByteSequenceError in Rdoc::Parser.check_modeline - specify encoding when reading a file in Rdoc::Parser.binary? - specify encoding when reading a file in RDoc::Generator::JsonIndex#generate_gzipped --- lib/rdoc/generator/json_index.rb | 2 +- lib/rdoc/parser.rb | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/rdoc/generator/json_index.rb b/lib/rdoc/generator/json_index.rb index 931438b3c3..57dc216bea 100644 --- a/lib/rdoc/generator/json_index.rb +++ b/lib/rdoc/generator/json_index.rb @@ -170,7 +170,7 @@ def generate_gzipped outfile = out_dir + "#{search_index_file}.gz" debug_msg "Reading the JSON index file from %s" % search_index_file - search_index = search_index_file.read + search_index = open(search_index_file, 'r:utf-8', &:read) debug_msg "Writing gzipped search index to %s" % outfile diff --git a/lib/rdoc/parser.rb b/lib/rdoc/parser.rb index 5abc374bf7..89ac3f1c2a 100644 --- a/lib/rdoc/parser.rb +++ b/lib/rdoc/parser.rb @@ -78,7 +78,7 @@ def self.binary?(file) return true if s[0, 2] == Marshal.dump('')[0, 2] or s.index("\x00") - mode = "r" + mode = 'r:utf-8' # default source encoding has been chagened to utf-8 s.sub!(/\A#!.*\n/, '') # assume shebang line isn't longer than 1024. encoding = s[/^\s*\#\s*(?:-\*-\s*)?(?:en)?coding:\s*([^\s;]+?)(?:-\*-|[\s;])/, 1] mode = "rb:#{encoding}" if encoding @@ -180,7 +180,9 @@ def self.check_modeline file_name return nil if /coding:/i =~ type type.downcase - rescue ArgumentError # invalid byte sequence, etc. + rescue ArgumentError + rescue Encoding::InvalidByteSequenceError # invalid byte sequence + end ## From b1490dd050e4f3d7576799c4c5c7268b0f9b2d5b Mon Sep 17 00:00:00 2001 From: dogatana Date: Sat, 3 Dec 2016 18:05:36 +0900 Subject: [PATCH 2/2] back to using Pathname#read --- lib/rdoc/generator/json_index.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rdoc/generator/json_index.rb b/lib/rdoc/generator/json_index.rb index 57dc216bea..ea9384e6d3 100644 --- a/lib/rdoc/generator/json_index.rb +++ b/lib/rdoc/generator/json_index.rb @@ -170,7 +170,7 @@ def generate_gzipped outfile = out_dir + "#{search_index_file}.gz" debug_msg "Reading the JSON index file from %s" % search_index_file - search_index = open(search_index_file, 'r:utf-8', &:read) + search_index = search_index_file.read(mode: 'r:utf-8') debug_msg "Writing gzipped search index to %s" % outfile