File Coverage

blib/lib/Tree/Predicate/Leaf.pm
Criterion Covered Total %
statement 22 22 100.0
branch 2 2 100.0
condition n/a
subroutine 8 8 100.0
pod 5 5 100.0
total 37 37 100.0


line stmt bran cond sub pod time code
1             package Tree::Predicate::Leaf;
2 2     2   20837 use warnings;
  2         4  
  2         81  
3 2     2   11 use strict;
  2         3  
  2         83  
4              
5 2     2   10 use base 'Tree::Predicate';
  2         4  
  2         1019  
6              
7             =head1 NAME
8              
9             Tree::Predicate::Leaf - internal subclass for Tree::Predicate
10              
11             =head1 VERSION
12              
13             Version 0.03
14              
15             =cut
16              
17             our $VERSION = '0.03';
18              
19              
20             =head1 SYNOPSIS
21              
22             This module is None of Your Business (tm).
23              
24             Please see Tree::Predicate
25              
26             =head1 FUNCTIONS
27              
28             =head2 new
29              
30             creates a new Tree::Predicate::Leaf
31              
32             =cut
33              
34             sub new {
35 46     46 1 76 my $class = shift;
36 46         47 my $atom = shift;
37 46         77 my %options = @_;
38            
39 46         161 my $self = {
40             ATOM => $atom,
41             NEGATED => exists $options{negated},
42             };
43            
44 46         230 bless $self, $class;
45             }
46              
47             =head2 as_string
48              
49             expresses the tree as a string suitable for including in SQL
50              
51             =cut
52              
53             sub as_string {
54 57     57 1 4468 my $self = shift;
55            
56 57 100       125 if ($self->{NEGATED}) {
57 18         101 "NOT($self->{ATOM})";
58             } else {
59 39         252 $self->{ATOM};
60             }
61             }
62              
63             =head2 negate
64              
65             flips the NEGATED bit
66              
67             =cut
68              
69             sub negate {
70 21     21 1 26 my $self = shift;
71            
72 21         72 $self->{NEGATED} ^= 1;
73             }
74              
75             =head2 operands
76              
77             a leaf has no operands!
78              
79             =cut
80              
81 1     1 1 6 sub operands { }
82              
83             =head2 split
84              
85             unsplittable, that's what it is
86             so unsplittable, mind your own biz
87              
88             =cut
89              
90 31     31 1 118 sub split { @_; }
91              
92             1;