Sha256: 4e1c362fc0f9c5a61c09221a73eba1eb7d69f3eb78ef536340f9abc0cd2b41ed
Contents?: true
Size: 790 Bytes
Versions: 1
Compression:
Stored size: 790 Bytes
Contents
# frozen_string_literal: true require "refinements/shared/ios/reread" module Refinements # Provides additional enhancements to the IO primitive. module IOs refine IO.singleton_class do def void new(sysopen("/dev/null", "w+")).then do |io| return io unless block_given? yield io io.tap(&:close) end end end refine IO do import_methods Shared::IOs::Reread def redirect other return self unless block_given? backup = dup reopen other yield self reopen backup end # rubocop:todo Naming/BlockForwarding def squelch(&block) = self.class.void.then { |void| redirect(void, &block) } # rubocop:enable Naming/BlockForwarding end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
refinements-11.1.3 | lib/refinements/ios.rb |