App-Colorist
view release on metacpan or search on metacpan
lib/App/Colorist/Colorizer.pm view on Meta::CPAN
$fh->print("\e[0m");
}
sub get_fg {
my ($self, $fg) = @_;
return '' unless defined $fg;
if ($self->debug) {
return "{$fg}";
}
else {
return sprintf "\e[38;5;%03dm", $fg;
}
}
sub get_bg {
my ($self, $bg) = @_;
return '' unless defined $bg;
if ($self->debug) {
return "{$bg}";
}
else {
return sprintf "\e[48;5;%03dm", $bg;
}
}
sub gray {
my ($self, $offset) = @_;
return 232 + $offset;
}
sub rgb {
my ($self, $r, $g, $b) = @_;
return 16 + $r*36 + $g*6 + $b;
}
sub eval_color {
my ($self, $c) = @_;
return !defined($c) ? undef
: !ref($c) ? $color_names{$c}
: @{$c} == 1 ? gray(@{$c})
: @{$c} == 3 ? rgb(@{$c})
: croak("unknown color type");
}
sub fg {
my ($self, $c) = @_;
$self->get_fg($self->eval_color($c));
}
sub bg($) {
my ($self, $c) = @_;
$self->get_bg($self->eval_color($c));
}
sub c {
my ($self, $n) = @_;
my $c = $self->colors->{$n};
return unless defined $c;
my ($fg, $bg);
if (ref $c eq 'HASH') {
$fg = $c->{fg};
$bg = $c->{bg};
}
else {
$fg = $c;
}
return $self->fg($fg).$self->bg($bg);
}
sub run {
my $self = shift;
$self->loop_and_colorize;
}
sub _split {
my ($line) = @_;
return split /^/, $line, 2;
}
sub readline {
my ($self) = @_;
my $s = $self->selected_inputs;
# Empty pending buffers first
for my $key ($self->input_buffer_keys) {
my $buffer = $self->get_input_buffer($key);
if (defined $buffer && $buffer =~ /\n/) {
my ($first_line, $rest) = _split($buffer);
$self->set_input_buffer($key, $rest);
return $first_line;
}
}
# We will keep trying this until we get a full line
while (1) {
# Quit if we've run out of handles
return unless $s->count > 0;
# Otherwise, block until we have something to read
my @ready = $s->can_read;
( run in 1.700 second using v1.01-cache-2.11-cpan-4ab04211f4c )