File Coverage

blib/lib/Data/Stag/ITextWriter.pm
Criterion Covered Total %
statement 41 49 83.6
branch 5 10 50.0
condition 2 4 50.0
subroutine 10 13 76.9
pod 3 9 33.3
total 61 85 71.7


line stmt bran cond sub pod time code
1             package Data::Stag::ITextWriter;
2              
3             =head1 NAME
4              
5             Data::Stag::ITextWriter - writes stag events into stag IText format
6              
7             =head1 SYNOPSIS
8              
9              
10             =cut
11              
12             =head1 DESCRIPTION
13              
14             =head1 PUBLIC METHODS -
15              
16             =cut
17              
18 1     1   9 use strict;
  1         3  
  1         77  
19 1     1   9 use base qw(Data::Stag::Writer);
  1         3  
  1         133  
20              
21 1     1   8 use vars qw($VERSION);
  1         2  
  1         525  
22             $VERSION="0.14";
23              
24             sub fmtstr {
25 0     0 0 0 return 'itext';
26             }
27              
28              
29             sub stack {
30 31     31 0 34 my $self = shift;
31 31 50       55 $self->{_stack} = shift if @_;
32 31         57 return $self->{_stack};
33             }
34              
35             sub indent_txt {
36 10     10 0 11 my $self = shift;
37 10         17 my $stack = $self->stack;
38 10         48 return " " x scalar(@$stack);
39             }
40              
41             sub o {
42 0     0 0 0 my $self = shift;
43 0         0 my @o = @_;
44 0         0 $self->addtext($self->indent_txt() . "@o");
45             }
46              
47             sub start_event {
48 10     10 1 13 my $self = shift;
49 10   50     22 my $ev = shift || '';
50 10         20 my $stack = $self->stack;
51 10         17 my $tag = "$ev: ";
52 10 50       33 if ($self->use_color) {
53 0         0 $tag = color('red').$ev.color('reset').':';
54             }
55 10         20 $self->addtext("\n" . $self->indent_txt() . $tag);
56 10         31 push(@$stack, $ev);
57             }
58             sub end_event {
59 10     10 1 12 my $self = shift;
60 10   50     24 my $ev = shift || '';
61 10         21 my $stack = $self->stack;
62 10         17 my $top = pop @$stack;
63 1     1   7 use Carp;
  1         1  
  1         284  
64 10 50       23 $top eq $ev or confess("$top ne $ev");
65 10         29 return $ev;
66             }
67             sub evbody {
68 7     7 1 14 my $self = shift;
69 7         10 my $body = shift;
70 7         11 my $str = itextesc($body);
71 7 50       19 if ($self->use_color) {
72 0         0 $str = color('white').$str;
73             }
74 7         18 $self->addtext($str);
75 7         18 return;
76             }
77              
78             sub itextesc {
79 7     7 0 10 my $w = shift;
80 7 50       13 if (!defined($w)) {
81 0         0 $w='';
82             }
83 7         12 $w =~ s/:/\\:/g;
84 7         14 return $w;
85             }
86              
87             # this should already be require'd in Writer.pm
88             sub color {
89 0     0 0   Term::ANSIColor::color(@_);
90             }
91              
92              
93             1;