source: perl/lib/BarnOwl/Style/Default.pm @ ee183be

release-1.10release-1.4release-1.5release-1.6release-1.7release-1.8release-1.9
Last change on this file since ee183be was ee183be, checked in by Nelson Elhage <nelhage@mit.edu>, 15 years ago
Break perlwrap.pm into multiple files. Break perlwrap.pm out into .pm files in perl/lib. With this commit, we keep perlwrap.pm around and still load it as before. The next commit will delete perlwrap.pm and start loading perl files directly from disk at runtime.
  • Property mode set to 100644
File size: 3.4 KB
Line 
1use strict;
2use warnings;
3
4package BarnOwl::Style::Default;
5################################################################################
6# Branching point for various formatting functions in this style.
7################################################################################
8sub format_message
9{
10    my $self = shift;
11    my $m    = shift;
12    my $fmt;
13
14    if ( $m->is_loginout) {
15        $fmt = $self->format_login($m);
16    } elsif($m->is_ping && $m->is_personal) {
17        $fmt = $self->format_ping($m);
18    } elsif($m->is_admin) {
19        $fmt = $self->format_admin($m);
20    } else {
21        $fmt = $self->format_chat($m);
22    }
23    $fmt = BarnOwl::Style::boldify($fmt) if $self->should_bold($m);
24    return $fmt;
25}
26
27sub should_bold {
28    my $self = shift;
29    my $m = shift;
30    return $m->is_personal && $m->direction eq "in";
31}
32
33sub description {"Default style";}
34
35BarnOwl::create_style("default", "BarnOwl::Style::Default");
36
37################################################################################
38
39sub format_time {
40    my $self = shift;
41    my $m = shift;
42    my ($time) = $m->time =~ /(\d\d:\d\d)/;
43    return $time;
44}
45
46sub format_login {
47    my $self = shift;
48    my $m = shift;
49    return sprintf(
50        '@b<%s%s> for @b(%s) (%s) %s',
51        uc( $m->login ),
52        $m->login_type,
53        $m->pretty_sender,
54        $m->login_extra,
55        $self->format_time($m)
56       );
57}
58
59sub format_ping {
60    my $self = shift;
61    my $m = shift;
62    my $personal_context = $m->personal_context;
63    $personal_context = ' [' . $personal_context . ']' if $personal_context;
64    return "\@b(PING)" . $personal_context . " from \@b(" . $m->pretty_sender . ")";
65}
66
67sub format_admin {
68    my $self = shift;
69    my $m = shift;
70    return "\@bold(OWL ADMIN)\n" . $self->indent_body($m);
71}
72
73sub format_chat {
74    my $self = shift;
75    my $m = shift;
76    my $header = $self->chat_header($m);
77    return $header . "\n". $self->indent_body($m);
78}
79
80sub chat_header {
81    my $self = shift;
82    my $m = shift;
83    my $header;
84    if ( $m->is_personal ) {
85        my $personal_context = $m->personal_context;
86        $personal_context = ' [' . $personal_context . ']' if $personal_context;
87
88        if ( $m->direction eq "out" ) {
89            $header = ucfirst $m->type . $personal_context . " sent to " . $m->pretty_recipient;
90        } else {
91            $header = ucfirst $m->type . $personal_context . " from " . $m->pretty_sender;
92        }
93    } else {
94        $header = $m->context;
95        if(defined $m->subcontext) {
96            $header .= ' / ' . $m->subcontext;
97        }
98        $header .= ' / @b{' . $m->pretty_sender . '}';
99    }
100
101    if($m->opcode) {
102        $header .= " [" . $m->opcode . "]";
103    }
104    $header .= "  " . $self->format_time($m);
105    $header .= $self->format_sender($m);
106    return $header;
107}
108
109sub format_sender {
110    my $self = shift;
111    my $m = shift;
112    my $sender = $m->long_sender;
113    $sender =~ s/\n.*$//s;
114    if (BarnOwl::getvar('colorztext') eq 'on') {
115      return "  (" . $sender . '@color[default]' . ")";
116    } else {
117      return "  ($sender)";
118    }
119}
120
121sub indent_body
122{
123    my $self = shift;
124    my $m = shift;
125
126    my $body = $m->body;
127    if ($m->{should_wordwrap}) {
128      $body = BarnOwl::wordwrap($body, BarnOwl::getnumcols()-9);
129    }
130    # replace newline followed by anything with
131    # newline plus four spaces and that thing.
132    $body =~ s/\n(.)/\n    $1/g;
133    # Trim trailing newlines.
134    $body =~ s/\n*$//;
135    return "    ".$body;
136}
137
138
1391;
Note: See TracBrowser for help on using the repository browser.