Thanks for this awesome gem - I made a quick monkey patch to puts to return strings so that the output can be caputered/displayed differently. I think this is valid usecase to implement properly in the gem.
RubyPGExtras.puts_returns_string = true
# now all table prints return uncolorized strings
module RubyPGExtras
@@puts_returns_string = false
def self.puts_returns_string
@@puts_returns_string
end
def self.puts_returns_string=(value)
@@puts_returns_string = value
end
end
class String
REGEXP_PATTERN = /\033\[([0-9]+);([0-9]+);([0-9]+)m(.+?)\033\[0m|([^\033]+)/m
def uncolorize
self.scan(REGEXP_PATTERN).inject("") do |str, match|
str << (match[3] || match[4])
end
end
end
module RubyPGExtras
def self.puts(args)
if @@puts_returns_string
args.to_s.uncolorize
else
Kernel.puts args
end
end
end
module RubyPGExtras
class DiagnosePrint
def puts(args)
RubyPGExtras.puts args
end
end
end
module RubyPGExtras
class TableInfoPrint
def puts(args)
RubyPGExtras.puts args
end
end
end
module RubyPGExtras
class IndexInfoPrint
def puts(args)
RubyPGExtras.puts args
end
end
end