@@ -25,43 +25,41 @@ def self.read_file filename, encoding, force_transcode = false
2525
2626 RDoc ::Encoding . set_encoding content
2727
28- if Object . const_defined? :Encoding then
29- begin
30- encoding ||= Encoding . default_external
31- orig_encoding = content . encoding
32-
33- if not orig_encoding . ascii_compatible? then
34- content . encode! encoding
35- elsif utf8 then
36- content . force_encoding Encoding ::UTF_8
37- content . encode! encoding
38- else
39- # assume the content is in our output encoding
40- content . force_encoding encoding
41- end
42-
43- unless content . valid_encoding? then
44- # revert and try to transcode
45- content . force_encoding orig_encoding
46- content . encode! encoding
47- end
48-
49- unless content . valid_encoding? then
50- warn "unable to convert #{ filename } to #{ encoding } , skipping"
51- content = nil
52- end
53- rescue Encoding ::InvalidByteSequenceError ,
54- Encoding ::UndefinedConversionError => e
55- if force_transcode then
56- content . force_encoding orig_encoding
57- content . encode! ( encoding ,
58- :invalid => :replace , :undef => :replace ,
59- :replace => '?' )
60- return content
61- else
62- warn "unable to convert #{ e . message } for #{ filename } , skipping"
63- return nil
64- end
28+ begin
29+ encoding ||= Encoding . default_external
30+ orig_encoding = content . encoding
31+
32+ if not orig_encoding . ascii_compatible? then
33+ content . encode! encoding
34+ elsif utf8 then
35+ content . force_encoding Encoding ::UTF_8
36+ content . encode! encoding
37+ else
38+ # assume the content is in our output encoding
39+ content . force_encoding encoding
40+ end
41+
42+ unless content . valid_encoding? then
43+ # revert and try to transcode
44+ content . force_encoding orig_encoding
45+ content . encode! encoding
46+ end
47+
48+ unless content . valid_encoding? then
49+ warn "unable to convert #{ filename } to #{ encoding } , skipping"
50+ content = nil
51+ end
52+ rescue Encoding ::InvalidByteSequenceError ,
53+ Encoding ::UndefinedConversionError => e
54+ if force_transcode then
55+ content . force_encoding orig_encoding
56+ content . encode! ( encoding ,
57+ :invalid => :replace , :undef => :replace ,
58+ :replace => '?' )
59+ return content
60+ else
61+ warn "unable to convert #{ e . message } for #{ filename } , skipping"
62+ return nil
6563 end
6664 end
6765
@@ -103,11 +101,8 @@ def self.set_encoding string
103101
104102 remove_frozen_string_literal string
105103
106- return unless Object . const_defined? :Encoding
107-
108104 enc = Encoding . find name
109105 string . force_encoding enc if enc
110106 end
111107
112108end
113-
0 commit comments