File Coverage

blib/lib/RapidApp/JSON/RawJavascript.pm
Criterion Covered Total %
statement 19 20 95.0
branch n/a
condition n/a
subroutine 8 9 88.8
pod 0 3 0.0
total 27 32 84.3


line stmt bran cond sub pod time code
1             package RapidApp::JSON::RawJavascript;
2              
3 6     6   39 use strict;
  6         11  
  6         163  
4 6     6   28 use warnings;
  6         12  
  6         141  
5 6     6   27 use Moose;
  6         10  
  6         35  
6              
7 6     6   33653 use overload '""' => sub { (shift)->stringify(@_) };
  6     1097   13  
  6         57  
  1097         2592  
8              
9             sub stringify {
10 1097     1097 0 1431 my $self = shift;
11 1097         2092 return $self->TO_JSON_RAW;
12             }
13              
14             has 'js' => ( is => 'rw', isa => 'Str' );
15              
16             # compat with RapidApp::JSONFunc API:
17 0     0 0 0 sub func { (shift)->js }
18              
19             around BUILDARGS => sub {
20             my $orig= shift;
21             my $class= shift;
22             if (scalar(@_) == 1 && !ref $_[0]) {
23             return $class->$orig( js => $_[0] ); # interpret single-param as a javascript fragment
24             } else {
25             return $class->$orig(@_);
26             }
27             };
28              
29             sub TO_JSON_RAW {
30 1128     1128 0 26912 return (shift)->js;
31             }
32              
33 6     6   1391 no Moose;
  6         21  
  6         34  
34             __PACKAGE__->meta->make_immutable;
35             1;