Sha256: 86ebfc3cbb72f628f37815c92278ee7010d1c564888acfeb46bc79cf67feaeeb
Contents?: true
Size: 1.88 KB
Versions: 1
Compression:
Stored size: 1.88 KB
Contents
# encoding: utf-8 module Nanoc::CLI # An output stream that passes output through stream cleaners. This can be # used to strip ANSI color sequences, for instance. class CleaningStream # @param [IO, StringIO] stream The stream to wrap def initialize(stream) @stream = stream @stream_cleaners = [] end # Adds a stream cleaner for the given class to this cleaning stream. If the # cleaning stream already has the given stream cleaner, nothing happens. # # @param [Nanoc::CLI::StreamCleaners::Abstract] klass The class of the # stream cleaner to add # # @return [void] def add_stream_cleaner(klass) unless @stream_cleaners.map { |c| c.class }.include?(klass) @stream_cleaners << klass.new end end # Removes the stream cleaner for the given class from this cleaning stream. # If the cleaning stream does not have the given stream cleaner, nothing # happens. # # @param [Nanoc::CLI::StreamCleaners::Abstract] klass The class of the # stream cleaner to add # # @return [void] def remove_stream_cleaner(klass) @stream_cleaners.delete_if { |c| c.class == klass } end # @group IO proxy methods # @see IO#write def write(s) @stream.write(self.clean(s)) end # @see IO#<< def <<(s) @stream.<<(self.clean(s)) end # @see IO#tty? def tty? @stream.tty? end # @see IO#flush def flush @stream.flush end # @see IO#tell def tell @stream.tell end # @see IO#print def print(s) @stream.print(self.clean(s)) end # @see IO#puts def puts(*s) @stream.puts(*s.map { |ss| self.clean(ss) }) end # @see StringIO#string def string @stream.string end protected def clean(s) @stream_cleaners.inject(s) { |m,c| c.clean(m) } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
nanoc-3.4.0 | lib/nanoc/cli/cleaning_stream.rb |