diff options
author | Dylan William Hardison <dylan@hardison.net> | 2018-08-04 18:24:15 +0200 |
---|---|---|
committer | Dylan William Hardison <dylan@hardison.net> | 2018-08-04 18:24:15 +0200 |
commit | f44392e8cdbea85ac308b2472f813ee605ebae4b (patch) | |
tree | 6e7adaf99a0e5a43eb1bf5a0d673d86b60f34f99 /Bugzilla/Quantum/Stdout.pm | |
parent | 5be3a7fd0061aa0bc3059e09079741873b9b833f (diff) | |
parent | 4528b21bc922f8b1e0ba8581d230a492aa43c9cf (diff) | |
download | bugzilla-f44392e8cdbea85ac308b2472f813ee605ebae4b.tar.gz bugzilla-f44392e8cdbea85ac308b2472f813ee605ebae4b.tar.xz |
Merge branch 'mojo-poc'
Diffstat (limited to 'Bugzilla/Quantum/Stdout.pm')
-rw-r--r-- | Bugzilla/Quantum/Stdout.pm | 41 |
1 files changed, 29 insertions, 12 deletions
diff --git a/Bugzilla/Quantum/Stdout.pm b/Bugzilla/Quantum/Stdout.pm index ee470a56a..be7b546ea 100644 --- a/Bugzilla/Quantum/Stdout.pm +++ b/Bugzilla/Quantum/Stdout.pm @@ -9,34 +9,51 @@ package Bugzilla::Quantum::Stdout; use 5.10.1; use Moo; +use Bugzilla::Logging; +use Encode; + has 'controller' => ( is => 'ro', required => 1, ); -sub TIEHANDLE { ## no critic (unpack) +has '_encoding' => ( + is => 'rw', + default => '', +); + +sub TIEHANDLE { ## no critic (unpack) my $class = shift; return $class->new(@_); } -sub PRINTF { ## no critic (unpack) +sub PRINTF { ## no critic (unpack) my $self = shift; - $self->PRINT(sprintf @_); + $self->PRINT( sprintf @_ ); } -sub PRINT { ## no critic (unpack) - my $self = shift; - - foreach my $chunk (@_) { - my $str = "$chunk"; - utf8::encode($str); - $self->controller->write($str); +sub PRINT { ## no critic (unpack) + my $self = shift; + my $c = $self->controller; + my $bytes = join '', @_; + return unless $bytes; + if ( $self->_encoding ) { + $bytes = encode( $self->_encoding, $bytes ); } + $c->write($bytes.$\); } sub BINMODE { - # no-op + my ( $self, $mode ) = @_; + if ($mode) { + if ( $mode eq ':bytes' or $mode eq ':raw' ) { + $self->_encoding(''); + } + elsif ( $mode eq ':utf8' ) { + $self->_encoding('utf8'); + } + } } -1;
\ No newline at end of file +1; |