File Coverage

blib/lib/Data/Object/String.pm
Criterion Covered Total %
statement 26 26 100.0
branch 2 4 50.0
condition 3 9 33.3
subroutine 9 9 100.0
pod 0 3 0.0
total 40 51 78.4


line stmt bran cond sub pod time code
1             # ABSTRACT: A String Object for Perl 5
2             package Data::Object::String;
3              
4 49     49   23416 use 5.010;
  49         181  
  49         1956  
5              
6 49     49   232 use Carp 'confess';
  49         68  
  49         3333  
7 49     49   264 use Scalar::Util 'blessed';
  49         75  
  49         2672  
8 49     49   11534 use Data::Object 'deduce_deep', 'detract_deep';
  49         83  
  49         3138  
9 49     49   11106 use Data::Object::Class 'with';
  49         790  
  49         473  
10              
11             with 'Data::Object::Role::String';
12              
13             use overload (
14 49         414 'bool' => 'data',
15             '""' => 'data',
16             '~~' => 'data',
17             fallback => 1,
18 49     49   46545 );
  49         93  
19              
20             our $VERSION = '0.20'; # VERSION
21              
22             sub new {
23 172     172 0 51300 my $class = shift;
24 172         286 my $data = shift;
25              
26 172   33     812 $class = ref($class) || $class;
27 172 50 33     876 unless (blessed($data) && $data->isa($class)) {
28 172 50 33     809 confess 'Type Instantiation Error: Not a String'
29             unless defined($data) && not ref($data);
30             }
31              
32 172         1069 return bless \$data, $class;
33             }
34              
35             around 'append' => sub {
36             my ($orig, $self, @args) = @_;
37             $$self = $self->$orig(@args);
38             return $self;
39             };
40              
41             around 'camelcase' => sub {
42             my ($orig, $self, @args) = @_;
43             $$self = $self->$orig(@args);
44             return $self;
45             };
46              
47             around 'chomp' => sub {
48             my ($orig, $self, @args) = @_;
49             $$self = $self->$orig(@args);
50             return $self;
51             };
52              
53             around 'chop' => sub {
54             my ($orig, $self, @args) = @_;
55             $$self = $self->$orig(@args);
56             return $self;
57             };
58              
59             around 'concat' => sub {
60             my ($orig, $self, @args) = @_;
61             $$self = $self->$orig(@args);
62             return $self;
63             };
64              
65             around 'contains' => sub {
66             my ($orig, $self, @args) = @_;
67             my $result = $self->$orig(@args);
68             return scalar deduce_deep $result;
69             };
70              
71             sub data {
72 189     189 0 37658 goto &detract;
73             }
74              
75             sub detract {
76 190     190 0 645 return detract_deep shift;
77             }
78              
79             around 'hex' => sub {
80             my ($orig, $self, @args) = @_;
81             my $result = $self->$orig(@args);
82             return scalar deduce_deep $result;
83             };
84              
85             around 'index' => sub {
86             my ($orig, $self, @args) = @_;
87             my $result = $self->$orig(@args);
88             return scalar deduce_deep $result;
89             };
90              
91             around 'lc' => sub {
92             my ($orig, $self, @args) = @_;
93             $$self = $self->$orig(@args);
94             return $self;
95             };
96              
97             around 'lcfirst' => sub {
98             my ($orig, $self, @args) = @_;
99             $$self = $self->$orig(@args);
100             return $self;
101             };
102              
103             around 'length' => sub {
104             my ($orig, $self, @args) = @_;
105             my $result = $self->$orig(@args);
106             return scalar deduce_deep $result;
107             };
108              
109             around 'lines' => sub {
110             my ($orig, $self, @args) = @_;
111             my $result = $self->$orig(@args);
112             return scalar deduce_deep $result;
113             };
114              
115             around 'lowercase' => sub {
116             my ($orig, $self, @args) = @_;
117             $$self = $self->$orig(@args);
118             return $self;
119             };
120              
121             around 'replace' => sub {
122             my ($orig, $self, @args) = @_;
123             $$self = $self->$orig(@args);
124             return $self;
125             };
126              
127             around 'reverse' => sub {
128             my ($orig, $self, @args) = @_;
129             $$self = $self->$orig(@args);
130             return $self;
131             };
132              
133             around 'rindex' => sub {
134             my ($orig, $self, @args) = @_;
135             my $result = $self->$orig(@args);
136             return scalar deduce_deep $result;
137             };
138              
139             around 'snakecase' => sub {
140             my ($orig, $self, @args) = @_;
141             $$self = $self->$orig(@args);
142             return $self;
143             };
144              
145             around 'split' => sub {
146             my ($orig, $self, @args) = @_;
147             my $result = $self->$orig(@args);
148             return scalar deduce_deep $result;
149             };
150              
151             around 'strip' => sub {
152             my ($orig, $self, @args) = @_;
153             $$self = $self->$orig(@args);
154             return $self;
155             };
156              
157             around 'titlecase' => sub {
158             my ($orig, $self, @args) = @_;
159             $$self = $self->$orig(@args);
160             return $self;
161             };
162              
163             around 'trim' => sub {
164             my ($orig, $self, @args) = @_;
165             $$self = $self->$orig(@args);
166             return $self;
167             };
168              
169             around 'uc' => sub {
170             my ($orig, $self, @args) = @_;
171             $$self = $self->$orig(@args);
172             return $self;
173             };
174              
175             around 'ucfirst' => sub {
176             my ($orig, $self, @args) = @_;
177             $$self = $self->$orig(@args);
178             return $self;
179             };
180              
181             around 'uppercase' => sub {
182             my ($orig, $self, @args) = @_;
183             $$self = $self->$orig(@args);
184             return $self;
185             };
186              
187             around 'words' => sub {
188             my ($orig, $self, @args) = @_;
189             my $result = $self->$orig(@args);
190             return scalar deduce_deep $result;
191             };
192              
193             1;
194              
195             __END__