lib/backports/tools/io.rb
require 'backports/tools/arguments' module Backports # Used internally to combine {IO|File} options hash into mode (String or Integer) def self.combine_mode_and_option(mode = nil, options = Backports::Undefined) # Can't backport autoclose, {internal|external|}encoding mode, options = nil, mode if mode.respond_to?(:to_hash) && options == Backports::Undefined options = {} if options == nil || options == Backports::Undefined options = coerce_to_hash(options) if mode && options[:mode] raise ArgumentError, "mode specified twice" end mode ||= options[:mode] || "r" mode = try_convert(mode, String, :to_str) || try_convert(mode, Integer, :to_int) || mode if options[:textmode] || options[:binmode] text = options[:textmode] || (mode.is_a?(String) && mode =~ /t/) bin = options[:binmode] || (mode.is_a?(String) ? mode =~ /b/ : mode & File::Constants::BINARY != 0) if text && bin raise ArgumentError, "both textmode and binmode specified" end case when !options[:binmode] when mode.is_a?(String) mode.insert(1, "b") else mode |= File::Constants::BINARY end end mode end # Used internally to combine {IO|File} options hash into mode (String or Integer) and perm def self.combine_mode_perm_and_option(mode = nil, perm = Backports::Undefined, options = Backports::Undefined) mode, options = nil, mode if mode.respond_to?(:to_hash) && perm == Backports::Undefined perm, options = nil, perm if perm.respond_to?(:to_hash) && options == Backports::Undefined perm = nil if perm == Backports::Undefined options = {} if options == Backports::Undefined options = coerce_to_hash(options) if perm && options[:perm] raise ArgumentError, "perm specified twice" end [combine_mode_and_option(mode, options), perm || options[:perm]] end def self.write(binary, filename, string, offset, options) offset, options = nil, offset if offset.respond_to?(:to_hash) && options == Backports::Undefined options = {} if options == Backports::Undefined options = coerce_to_hash(options) File.open(filename, 'a+'){} if offset # insure existence options = {:mode => offset.nil? ? "w" : "r+"}.merge(options) args = options[:open_args] || [options] File.open(filename, *Backports.combine_mode_perm_and_option(*args)) do |f| f.binmode if binary && f.respond_to?(:binmode) f.seek(offset) unless offset.nil? f.write(string) end end end
Source Files
- lib/backports.rb
- lib/backports/1.8.7.rb
- lib/backports/1.8.7/argf.rb
- lib/backports/1.8.7/argf/bytes.rb
- lib/backports/1.8.7/argf/chars.rb
- lib/backports/1.8.7/argf/each.rb
- lib/backports/1.8.7/argf/each_byte.rb
- lib/backports/1.8.7/argf/each_char.rb
- lib/backports/1.8.7/argf/each_line.rb
- lib/backports/1.8.7/argf/getbyte.rb
- lib/backports/1.8.7/argf/lines.rb
- lib/backports/1.8.7/argf/readbyte.rb
- lib/backports/1.8.7/array.rb
- lib/backports/1.8.7/array/collect.rb
- lib/backports/1.8.7/array/combination.rb
- lib/backports/1.8.7/array/cycle.rb
- lib/backports/1.8.7/array/delete_if.rb
- lib/backports/1.8.7/array/each.rb
- lib/backports/1.8.7/array/each_index.rb
- lib/backports/1.8.7/array/find_index.rb
- lib/backports/1.8.7/array/flatten.rb
- lib/backports/1.8.7/array/index.rb
- lib/backports/1.8.7/array/map.rb
- lib/backports/1.8.7/array/permutation.rb
- lib/backports/1.8.7/array/pop.rb
- lib/backports/1.8.7/array/product.rb
- lib/backports/1.8.7/array/reject.rb
- lib/backports/1.8.7/array/reverse_each.rb
- lib/backports/1.8.7/array/rindex.rb
- lib/backports/1.8.7/array/select.rb
- lib/backports/1.8.7/array/shift.rb
- lib/backports/1.8.7/array/shuffle.rb
- lib/backports/1.8.7/binding.rb
- lib/backports/1.8.7/binding/eval.rb
- lib/backports/1.8.7/dir.rb
- lib/backports/1.8.7/dir/each.rb
- lib/backports/1.8.7/dir/foreach.rb
- lib/backports/1.8.7/enumerable.rb
- lib/backports/1.8.7/enumerable/count.rb
- lib/backports/1.8.7/enumerable/cycle.rb
- lib/backports/1.8.7/enumerable/detect.rb
- lib/backports/1.8.7/enumerable/drop.rb
- lib/backports/1.8.7/enumerable/drop_while.rb
- lib/backports/1.8.7/enumerable/each_cons.rb
- lib/backports/1.8.7/enumerable/each_slice.rb
- lib/backports/1.8.7/enumerable/each_with_index.rb
- lib/backports/1.8.7/enumerable/entries.rb
- lib/backports/1.8.7/enumerable/find.rb
- lib/backports/1.8.7/enumerable/find_all.rb
- lib/backports/1.8.7/enumerable/find_index.rb
- lib/backports/1.8.7/enumerable/first.rb
- lib/backports/1.8.7/enumerable/group_by.rb
- lib/backports/1.8.7/enumerable/inject.rb
- lib/backports/1.8.7/enumerable/max_by.rb
- lib/backports/1.8.7/enumerable/min_by.rb
- lib/backports/1.8.7/enumerable/minmax.rb
- lib/backports/1.8.7/enumerable/minmax_by.rb
- lib/backports/1.8.7/enumerable/none.rb
- lib/backports/1.8.7/enumerable/one.rb
- lib/backports/1.8.7/enumerable/partition.rb
- lib/backports/1.8.7/enumerable/reduce.rb
- lib/backports/1.8.7/enumerable/reject.rb
- lib/backports/1.8.7/enumerable/reverse_each.rb
- lib/backports/1.8.7/enumerable/select.rb
- lib/backports/1.8.7/enumerable/sort_by.rb
- lib/backports/1.8.7/enumerable/take.rb
- lib/backports/1.8.7/enumerable/take_while.rb
- lib/backports/1.8.7/enumerable/to_a.rb
- lib/backports/1.8.7/enumerator.rb
- lib/backports/1.8.7/enumerator/each.rb
- lib/backports/1.8.7/enumerator/next.rb
- lib/backports/1.8.7/enumerator/rewind.rb
- lib/backports/1.8.7/enumerator/with_index.rb
- lib/backports/1.8.7/env.rb
- lib/backports/1.8.7/env/delete_if.rb
- lib/backports/1.8.7/env/each.rb
- lib/backports/1.8.7/env/each_key.rb
- lib/backports/1.8.7/env/each_pair.rb
- lib/backports/1.8.7/env/each_value.rb
- lib/backports/1.8.7/env/reject.rb
- lib/backports/1.8.7/env/select.rb
- lib/backports/1.8.7/fixnum.rb
- lib/backports/1.8.7/fixnum/div.rb
- lib/backports/1.8.7/fixnum/fdiv.rb
- lib/backports/1.8.7/float.rb
- lib/backports/1.8.7/float/fdiv.rb
- lib/backports/1.8.7/gc.rb
- lib/backports/1.8.7/gc/stress.rb
- lib/backports/1.8.7/hash.rb
- lib/backports/1.8.7/hash/constructor.rb
- lib/backports/1.8.7/hash/delete_if.rb
- lib/backports/1.8.7/hash/each.rb
- lib/backports/1.8.7/hash/each_key.rb
- lib/backports/1.8.7/hash/each_pair.rb
- lib/backports/1.8.7/hash/each_value.rb
- lib/backports/1.8.7/hash/eql.rb
- lib/backports/1.8.7/hash/hash.rb
- lib/backports/1.8.7/hash/reject.rb
- lib/backports/1.8.7/hash/select.rb
- lib/backports/1.8.7/integer.rb
- lib/backports/1.8.7/integer/downto.rb
- lib/backports/1.8.7/integer/even.rb
- lib/backports/1.8.7/integer/odd.rb
- lib/backports/1.8.7/integer/ord.rb
- lib/backports/1.8.7/integer/pred.rb
- lib/backports/1.8.7/integer/times.rb
- lib/backports/1.8.7/integer/upto.rb
- lib/backports/1.8.7/io.rb
- lib/backports/1.8.7/io/bytes.rb
- lib/backports/1.8.7/io/chars.rb
- lib/backports/1.8.7/io/each.rb
- lib/backports/1.8.7/io/each_byte.rb
- lib/backports/1.8.7/io/each_char.rb
- lib/backports/1.8.7/io/each_line.rb
- lib/backports/1.8.7/io/foreach.rb
- lib/backports/1.8.7/io/getbyte.rb
- lib/backports/1.8.7/io/lines.rb
- lib/backports/1.8.7/io/readbyte.rb
- lib/backports/1.8.7/kernel.rb
- lib/backports/1.8.7/kernel/__method__.rb
- lib/backports/1.8.7/kernel/instance_exec.rb
- lib/backports/1.8.7/kernel/tap.rb
- lib/backports/1.8.7/method.rb
- lib/backports/1.8.7/method/name.rb
- lib/backports/1.8.7/module.rb
- lib/backports/1.8.7/module/class_exec.rb
- lib/backports/1.8.7/module/module_exec.rb
- lib/backports/1.8.7/numeric.rb
- lib/backports/1.8.7/numeric/step.rb
- lib/backports/1.8.7/object_space.rb
- lib/backports/1.8.7/object_space/each_object.rb
- lib/backports/1.8.7/process.rb
- lib/backports/1.8.7/process/exec.rb
- lib/backports/1.8.7/range.rb
- lib/backports/1.8.7/range/each.rb
- lib/backports/1.8.7/range/step.rb
- lib/backports/1.8.7/regexp.rb
- lib/backports/1.8.7/regexp/union.rb
- lib/backports/1.8.7/stdlib.rb
- lib/backports/1.8.7/stdlib/tmpdir.rb
- lib/backports/1.8.7/stop_iteration.rb
- lib/backports/1.8.7/string.rb
- lib/backports/1.8.7/string/bytes.rb
- lib/backports/1.8.7/string/bytesize.rb
- lib/backports/1.8.7/string/each.rb
- lib/backports/1.8.7/string/each_byte.rb
- lib/backports/1.8.7/string/each_char.rb
- lib/backports/1.8.7/string/each_line.rb
- lib/backports/1.8.7/string/end_with.rb
- lib/backports/1.8.7/string/lines.rb
- lib/backports/1.8.7/string/partition.rb
- lib/backports/1.8.7/string/rpartition.rb
- lib/backports/1.8.7/string/start_with.rb
- lib/backports/1.8.7/string/upto.rb
- lib/backports/1.8.7/struct.rb
- lib/backports/1.8.7/struct/each.rb
- lib/backports/1.8.7/struct/each_pair.rb
- lib/backports/1.8.7/symbol.rb
- lib/backports/1.8.7/symbol/to_proc.rb
- lib/backports/1.8.8.rb
- lib/backports/1.8.rb
- lib/backports/1.9.1.rb
- lib/backports/1.9.1/array.rb
- lib/backports/1.9.1/array/sample.rb
- lib/backports/1.9.1/array/try_convert.rb
- lib/backports/1.9.1/dir.rb
- lib/backports/1.9.1/dir/to_path.rb
- lib/backports/1.9.1/enumerable.rb
- lib/backports/1.9.1/enumerable/each_with_index.rb
- lib/backports/1.9.1/enumerable/each_with_object.rb
- lib/backports/1.9.1/enumerator.rb
- lib/backports/1.9.1/enumerator/new.rb
- lib/backports/1.9.1/enumerator/with_object.rb
- lib/backports/1.9.1/env.rb
- lib/backports/1.9.1/env/key.rb
- lib/backports/1.9.1/file.rb
- lib/backports/1.9.1/file/atime.rb
- lib/backports/1.9.1/file/basename.rb
- lib/backports/1.9.1/file/binary.rb
- lib/backports/1.9.1/file/blockdev.rb
- lib/backports/1.9.1/file/chardev.rb
- lib/backports/1.9.1/file/chmod.rb
- lib/backports/1.9.1/file/chown.rb
- lib/backports/1.9.1/file/ctime.rb
- lib/backports/1.9.1/file/delete.rb
- lib/backports/1.9.1/file/directory.rb
- lib/backports/1.9.1/file/dirname.rb
- lib/backports/1.9.1/file/executable.rb
- lib/backports/1.9.1/file/executable_real.rb
- lib/backports/1.9.1/file/exist.rb
- lib/backports/1.9.1/file/exists.rb
- lib/backports/1.9.1/file/expand_path.rb
- lib/backports/1.9.1/file/extname.rb
- lib/backports/1.9.1/file/file.rb
- lib/backports/1.9.1/file/ftype.rb
- lib/backports/1.9.1/file/grpowned.rb
- lib/backports/1.9.1/file/join.rb
- lib/backports/1.9.1/file/lchmod.rb
- lib/backports/1.9.1/file/lchown.rb
- lib/backports/1.9.1/file/link.rb
- lib/backports/1.9.1/file/lstat.rb
- lib/backports/1.9.1/file/mtime.rb
- lib/backports/1.9.1/file/new.rb
- lib/backports/1.9.1/file/open.rb
- lib/backports/1.9.1/file/owned.rb
- lib/backports/1.9.1/file/pipe.rb
- lib/backports/1.9.1/file/readable.rb
- lib/backports/1.9.1/file/readable_real.rb
- lib/backports/1.9.1/file/readlink.rb
- lib/backports/1.9.1/file/rename.rb
- lib/backports/1.9.1/file/setgid.rb
- lib/backports/1.9.1/file/setuid.rb
- lib/backports/1.9.1/file/size.rb
- lib/backports/1.9.1/file/socket.rb
- lib/backports/1.9.1/file/split.rb
- lib/backports/1.9.1/file/stat.rb
- lib/backports/1.9.1/file/sticky.rb
- lib/backports/1.9.1/file/symlink.rb
- lib/backports/1.9.1/file/to_path.rb
- lib/backports/1.9.1/file/truncate.rb
- lib/backports/1.9.1/file/unlink.rb
- lib/backports/1.9.1/file/writable.rb
- lib/backports/1.9.1/file/writable_real.rb
- lib/backports/1.9.1/file/zero.rb
- lib/backports/1.9.1/float.rb
- lib/backports/1.9.1/float/round.rb
- lib/backports/1.9.1/hash.rb
- lib/backports/1.9.1/hash/assoc.rb
- lib/backports/1.9.1/hash/default_proc.rb
- lib/backports/1.9.1/hash/key.rb
- lib/backports/1.9.1/hash/rassoc.rb
- lib/backports/1.9.1/hash/try_convert.rb
- lib/backports/1.9.1/integer.rb
- lib/backports/1.9.1/integer/magnitude.rb
- lib/backports/1.9.1/integer/round.rb
- lib/backports/1.9.1/io.rb
- lib/backports/1.9.1/io/binread.rb
- lib/backports/1.9.1/io/open.rb
- lib/backports/1.9.1/io/try_convert.rb
- lib/backports/1.9.1/io/ungetbyte.rb
- lib/backports/1.9.1/kernel.rb
- lib/backports/1.9.1/kernel/__callee__.rb
- lib/backports/1.9.1/kernel/define_singleton_method.rb
- lib/backports/1.9.1/kernel/public_method.rb
- lib/backports/1.9.1/kernel/public_send.rb
- lib/backports/1.9.1/kernel/require_relative.rb
- lib/backports/1.9.1/math.rb
- lib/backports/1.9.1/math/log.rb
- lib/backports/1.9.1/math/log2.rb
- lib/backports/1.9.1/numeric.rb
- lib/backports/1.9.1/numeric/round.rb
- lib/backports/1.9.1/proc.rb
- lib/backports/1.9.1/proc/case_compare.rb
- lib/backports/1.9.1/proc/curry.rb
- lib/backports/1.9.1/proc/lambda.rb
- lib/backports/1.9.1/proc/yield.rb
- lib/backports/1.9.1/range.rb
- lib/backports/1.9.1/range/cover.rb
- lib/backports/1.9.1/regexp.rb
- lib/backports/1.9.1/regexp/try_convert.rb
- lib/backports/1.9.1/stdlib.rb
- lib/backports/1.9.1/stdlib/prime.rb
- lib/backports/1.9.1/string.rb
- lib/backports/1.9.1/string/ascii_only.rb
- lib/backports/1.9.1/string/chr.rb
- lib/backports/1.9.1/string/clear.rb
- lib/backports/1.9.1/string/codepoints.rb
- lib/backports/1.9.1/string/each_codepoint.rb
- lib/backports/1.9.1/string/getbyte.rb
- lib/backports/1.9.1/string/ord.rb
- lib/backports/1.9.1/string/setbyte.rb
- lib/backports/1.9.1/string/try_convert.rb
- lib/backports/1.9.1/symbol.rb
- lib/backports/1.9.1/symbol/capitalize.rb
- lib/backports/1.9.1/symbol/casecmp.rb
- lib/backports/1.9.1/symbol/comparable.rb
- lib/backports/1.9.1/symbol/comparison.rb
- lib/backports/1.9.1/symbol/downcase.rb
- lib/backports/1.9.1/symbol/element_reference.rb
- lib/backports/1.9.1/symbol/empty.rb
- lib/backports/1.9.1/symbol/length.rb
- lib/backports/1.9.1/symbol/match.rb
- lib/backports/1.9.1/symbol/next.rb
- lib/backports/1.9.1/symbol/size.rb
- lib/backports/1.9.1/symbol/succ.rb
- lib/backports/1.9.1/symbol/swapcase.rb
- lib/backports/1.9.1/symbol/upcase.rb
- lib/backports/1.9.2.rb
- lib/backports/1.9.2/array.rb
- lib/backports/1.9.2/array/keep_if.rb
- lib/backports/1.9.2/array/product.rb
- lib/backports/1.9.2/array/repeated_combination.rb
- lib/backports/1.9.2/array/repeated_permutation.rb
- lib/backports/1.9.2/array/rotate.rb
- lib/backports/1.9.2/array/select.rb
- lib/backports/1.9.2/array/sort_by.rb
- lib/backports/1.9.2/array/uniq.rb
- lib/backports/1.9.2/complex.rb
- lib/backports/1.9.2/complex/to_r.rb
- lib/backports/1.9.2/dir.rb
- lib/backports/1.9.2/dir/home.rb
- lib/backports/1.9.2/enumerable.rb
- lib/backports/1.9.2/enumerable/chunk.rb
- lib/backports/1.9.2/enumerable/collect_concat.rb
- lib/backports/1.9.2/enumerable/each_entry.rb
- lib/backports/1.9.2/enumerable/flat_map.rb
- lib/backports/1.9.2/enumerable/slice_before.rb
- lib/backports/1.9.2/float.rb
- lib/backports/1.9.2/float/infinity.rb
- lib/backports/1.9.2/float/nan.rb
- lib/backports/1.9.2/hash.rb
- lib/backports/1.9.2/hash/keep_if.rb
- lib/backports/1.9.2/hash/select.rb
- lib/backports/1.9.2/kernel.rb
- lib/backports/1.9.2/kernel/singleton_class.rb
- lib/backports/1.9.2/random.rb
- lib/backports/1.9.2/stdlib.rb
- lib/backports/1.9.2/stdlib/matrix.rb
- lib/backports/1.9.2/stdlib/matrix/eigenvalue_decomposition.rb
- lib/backports/1.9.2/stdlib/matrix/lup_decomposition.rb
- lib/backports/1.9.2/stdlib/set.rb
- lib/backports/1.9.3.rb
- lib/backports/1.9.3/file.rb
- lib/backports/1.9.3/file/null.rb
- lib/backports/1.9.3/io.rb
- lib/backports/1.9.3/io/advise.rb
- lib/backports/1.9.3/io/binwrite.rb
- lib/backports/1.9.3/io/write.rb
- lib/backports/1.9.3/string.rb
- lib/backports/1.9.3/string/byteslice.rb
- lib/backports/1.9.3/string/prepend.rb
- lib/backports/1.9.rb
- lib/backports/2.0.0.rb
- lib/backports/2.0.0/array.rb
- lib/backports/2.0.0/array/bsearch.rb
- lib/backports/2.0.0/enumerable.rb
- lib/backports/2.0.0/enumerable/lazy.rb
- lib/backports/2.0.0/enumerator.rb
- lib/backports/2.0.0/enumerator/lazy.rb
- lib/backports/2.0.0/env.rb
- lib/backports/2.0.0/env/to_h.rb
- lib/backports/2.0.0/hash.rb
- lib/backports/2.0.0/hash/default_proc.rb
- lib/backports/2.0.0/hash/to_h.rb
- lib/backports/2.0.0/nil.rb
- lib/backports/2.0.0/nil/to_h.rb
- lib/backports/2.0.0/range.rb
- lib/backports/2.0.0/range/bsearch.rb
- lib/backports/2.0.0/range/size.rb
- lib/backports/2.0.0/stdlib.rb
- lib/backports/2.0.0/stdlib/abbrev.rb
- lib/backports/2.0.0/stdlib/fake_stdlib_lib.rb
- lib/backports/2.0.0/stdlib/ostruct.rb
- lib/backports/2.0.0/struct.rb
- lib/backports/2.0.0/struct/to_h.rb
- lib/backports/2.0.rb
- lib/backports/2.1.0.rb
- lib/backports/2.1.0/array.rb
- lib/backports/2.1.0/array/to_h.rb
- lib/backports/2.1.0/bignum.rb
- lib/backports/2.1.0/bignum/bit_length.rb
- lib/backports/2.1.0/enumerable.rb
- lib/backports/2.1.0/enumerable/to_h.rb
- lib/backports/2.1.0/fixnum.rb
- lib/backports/2.1.0/fixnum/bit_length.rb
- lib/backports/2.1.0/module.rb
- lib/backports/2.1.0/module/include.rb
- lib/backports/2.1.rb
- lib/backports/2.2.0.rb
- lib/backports/2.2.0/enumerable.rb
- lib/backports/2.2.0/enumerable/slice_after.rb
- lib/backports/2.2.0/enumerable/slice_when.rb
- lib/backports/2.2.0/float.rb
- lib/backports/2.2.0/float/next_float.rb
- lib/backports/2.2.0/float/prev_float.rb
- lib/backports/2.2.rb
- lib/backports/2.3.0.rb
- lib/backports/2.3.rb
- lib/backports/2.4.0.rb
- lib/backports/2.4.0/comparable.rb
- lib/backports/2.4.0/comparable/clamp.rb
- lib/backports/2.4.rb
- lib/backports/basic_object.rb
- lib/backports/force/array_map.rb
- lib/backports/force/enumerable_map.rb
- lib/backports/force/hash_select.rb
- lib/backports/force/string_length.rb
- lib/backports/force/string_size.rb
- lib/backports/rails.rb
- lib/backports/rails/array.rb
- lib/backports/rails/enumerable.rb
- lib/backports/rails/hash.rb
- lib/backports/rails/kernel.rb
- lib/backports/rails/module.rb
- lib/backports/rails/string.rb
- lib/backports/random/MT19937.rb
- lib/backports/random/bits_and_bytes.rb
- lib/backports/random/implementation.rb
- lib/backports/random/load.rb
- lib/backports/std_lib.rb
- lib/backports/tools.rb
- lib/backports/tools/alias_method.rb
- lib/backports/tools/alias_method_chain.rb
- lib/backports/tools/arguments.rb
- lib/backports/tools/extreme_object.rb
- lib/backports/tools/float_integer_conversion.rb
- lib/backports/tools/io.rb
- lib/backports/tools/make_block_optional.rb
- lib/backports/tools/path.rb
- lib/backports/tools/require_relative_dir.rb
- lib/backports/tools/std_lib.rb
- lib/backports/tools/suppress_verbose_warnings.rb
- lib/backports/version.rb