class JsDuck::Util::IO
A helper to use instead the builtin IO
class to read files in correct encoding.
By default in Ruby 1.9 the encoding is auto-detected, which can have surprising results. So in here we read in all files in UTF-8 (the default) or in some other encoding specified through –encoding option and convert it to UTF-8 internally.
We also allow for UTF-8 byte order mark.
Public Class Methods
configure(opts)
click to toggle source
Configures the encoding from command line options.
# File lib/jsduck/util/io.rb, line 17 def self.configure(opts) encoding = opts.encoding if opts.encoding end
encoding=(e)
click to toggle source
Sets the external encoding to be used for reading files. When it's different from UTF-8, the input will be converted to UTF-8.
# File lib/jsduck/util/io.rb, line 23 def self.encoding=(e) if e =~ /^(BOM\|)?UTF-8$/i @@encoding = e else @@encoding = e+":UTF-8" end end
read(filename)
click to toggle source
Reads given filename into string
# File lib/jsduck/util/io.rb, line 32 def self.read(filename) File.open(filename, "r:"+@@encoding) {|f| self.strip_utf8_bom(f.read) } end
strip_utf8_bom(string)
click to toggle source
Takes care of removing UTF-8 byte order mark in Ruby <= 1.8 which doesn't have built-in encodings support.
# File lib/jsduck/util/io.rb, line 38 def self.strip_utf8_bom(string) if "".respond_to?(:encoding) string else string.sub(/\A\xEF\xBB\xBF/, "") end end