Changeset 811ad93


Ignore:
Timestamp:
Apr 30, 2008, 1:29:45 PM (16 years ago)
Author:
Nelson Elhage <nelhage@mit.edu>
Branches:
master, barnowl_perlaim, debian, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
Children:
f094fc4, 61abb18
Parents:
2650a10
Message:
Refactor default style code somewhat to be more easily extensible
File:
1 edited

Legend:

Unmodified
Added
Removed
  • perlwrap.pm

    r2650a10 r811ad93  
    774774{
    775775    my $self = shift;
    776     my $m = shift;
     776    my $m    = shift;
     777    my $fmt;
    777778
    778779    if ( $m->is_loginout) {
    779         return $self->format_login($m);
     780        $fmt = $self->format_login($m);
    780781    } elsif($m->is_ping && $m->is_personal) {
    781         return $self->format_ping($m);
     782        $fmt = $self->format_ping($m);
    782783    } elsif($m->is_admin) {
    783         return $self->format_admin($m);
     784        $fmt = $self->format_admin($m);
    784785    } else {
    785         return $self->format_chat($m);
    786     }
     786        $fmt = $self->format_chat($m);
     787    }
     788    $fmt = BarnOwl::Style::boldify($fmt) if $self->should_bold($m);
     789    return $fmt;
     790}
     791
     792sub should_bold {
     793    my $self = shift;
     794    my $m = shift;
     795    return $m->is_personal && $m->direction eq "in";
    787796}
    788797
     
    821830    my $self = shift;
    822831    my $m = shift;
    823     return "\@bold(OWL ADMIN)\n" . indentBody($m);
     832    return "\@bold(OWL ADMIN)\n" . $self->indent_body($m);
    824833}
    825834
    826835sub format_chat($) {
     836    my $self = shift;
     837    my $m = shift;
     838    my $header = $self->chat_header($m);
     839    return $header . "\n". $self->indent_body($m);
     840}
     841
     842sub chat_header {
    827843    my $self = shift;
    828844    my $m = shift;
     
    846862    }
    847863    $header .= "  " . time_hhmm($m);
     864    $header .= $self->format_sender($m);
     865    return $header;
     866}
     867
     868sub format_sender {
     869    my $self = shift;
     870    my $m = shift;
    848871    my $sender = $m->long_sender;
    849872    $sender =~ s/\n.*$//s;
    850     $header .= " " x (4 - ((length $header) % 4));
    851     $header .= "(" . $sender . '@color[default]' . ")";
    852     my $message = $header . "\n". indentBody($m);
    853     if($m->is_personal && $m->direction eq "in") {
    854         $message = BarnOwl::Style::boldify($message);
    855     }
    856     return $message;
    857 }
    858 
    859 sub indentBody($)
     873    return "  (" . $sender . '@color[default]' . ")";
     874}
     875
     876sub indent_body($)
    860877{
     878    my $self = shift;
    861879    my $m = shift;
    862880
     
    874892
    875893package BarnOwl::Style::Basic;
    876 
    877894our @ISA=qw(BarnOwl::Style::Default);
    878895
     
    882899
    883900package BarnOwl::Style::OneLine;
    884 ################################################################################
    885 # Branching point for various formatting functions in this style.
    886 ################################################################################
     901# Inherit format_message to dispatch
     902our @ISA = qw(BarnOwl::Style::Default);
     903
    887904use constant BASE_FORMAT => '%s %-13.13s %-11.11s %-12.12s ';
    888 sub format_message($) {
    889   my $self = shift;
    890   my $m = shift;
    891 
    892   if ( $m->is_loginout ) {
    893     return $self->format_login($m);
    894   }
    895   elsif ( $m->is_ping) {
    896     return $self->format_ping($m);
    897   }
    898   elsif ( $m->is_admin || $m->is_loopback) {
    899     return $self->format_local($m);
    900   }
    901   else {
    902     return $self->format_chat($m);
    903   }
    904 }
    905905
    906906sub description {"Formats for one-line-per-message"}
     
    948948  if ($m->is_personal) {
    949949    $line= sprintf(BASE_FORMAT,
    950                    $dirsym,
    951                    $m->type,
    952                    '',
    953                    ($dir eq 'out'
    954                       ? $m->pretty_recipient
    955                       : $m->pretty_sender));
     950                   $dirsym,
     951                   $m->type,
     952                   '',
     953                   ($dir eq 'out'
     954                    ? $m->pretty_recipient
     955                    : $m->pretty_sender));
    956956  }
    957957  else {
    958958    $line = sprintf(BASE_FORMAT,
    959                     $dirsym,
    960                     $m->context,
    961                     $m->subcontext,
    962                     ($dir eq 'out'
    963                        ? $m->pretty_recipient
    964                        : $m->pretty_sender));
     959                    $dirsym,
     960                    $m->context,
     961                    $m->subcontext,
     962                    ($dir eq 'out'
     963                     ? $m->pretty_recipient
     964                     : $m->pretty_sender));
    965965  }
    966966
     
    968968  $body =~ tr/\n/ /;
    969969  $line .= $body;
    970   $line = BarnOwl::Style::boldify($line) if ($m->is_personal && lc($m->direction) eq 'in');
    971970  return $line;
    972971}
    973972
    974 # Format locally generated messages
    975 sub format_local($)
     973# Format owl admin messages
     974sub format_admin($)
    976975{
    977976  my $self = shift;
    978977  my $m = shift;
    979   my $type = uc($m->{type});
    980   my $line = sprintf(BASE_FORMAT, '<', $type, '', '');
     978  my $line = sprintf(BASE_FORMAT, '<', 'ADMIN', '', '');
    981979  my $body = $m->{body};
    982980  $body =~ tr/\n/ /;
Note: See TracChangeset for help on using the changeset viewer.