module Nuggets::File::OpenFileMixin
Public Instance Methods
open_file(filename[, options[, mode]]) → anIO
click to toggle source
open_file(filename[, options[, mode]]) { |io| ... } → anObject
Supported options are mode (defaults to r) and encoding (defaults to the default external encoding).
If filename is -, sets io to STDOUT when in write mode or STDIN otherwise. Puts io into binary mode if requested. Sets io's encoding.
If filename ends with .gz or .gzip, uses Zlib for reading or writing the file.
Otherwise defers to ::open.
Yields io to the given block or returns it when no block given.
# File lib/nuggets/file/open_file_mixin.rb 47 def open_file(filename, options = {}, mode = 'r', &block) 48 mode = options.fetch(:mode, mode); writing = mode =~ /w/ 49 50 encoding = options.fetch(:encoding, ::Encoding.default_external) 51 52 case filename 53 when '-' 54 io = writing ? $stdout : $stdin 55 io.binmode if mode =~ /b/ 56 io.set_encoding(encoding) 57 58 block ? block[io] : io 59 when /\.gz(?:ip)?\z/i 60 require 'zlib' 61 62 klass = writing ? ::Zlib::GzipWriter : ::Zlib::GzipReader 63 klass.open(filename, encoding: encoding, &block) 64 else 65 open(filename, mode, encoding: encoding, &block) 66 end 67 end