File Coverage

blib/lib/YAML/PP/YAMLScript.pm
Criterion Covered Total %
statement 34 34 100.0
branch n/a
condition 1 2 50.0
subroutine 10 10 100.0
pod 2 3 66.6
total 47 49 95.9


line stmt bran cond sub pod time code
1 3     3   520792 use strict; use warnings;
  3     3   7  
  3         120  
  3         73  
  3         7  
  3         415  
2             package YAML::PP::YAMLScript;
3              
4             our $VERSION = '0.0.2';
5              
6 3     3   111 use base 'YAML::PP';
  3         7  
  3         2290  
7              
8 3     3   285280 use File::Spec;
  3         15  
  3         81  
9              
10 3     3   1922 use YAMLScript::Common;
  3         17439  
  3         817  
11 3     3   1635 use YAMLScript::RT;
  3         656013  
  3         736  
12              
13             sub new {
14 2     2 1 427075 my $class = shift;
15 2         7 my (%args) = @_;
16 2   50     21 $args{schema} //= ['Failsafe'];
17 2         27 $class->SUPER::new(%args);
18             }
19              
20             sub load_file {
21 2     2 1 1662 my ($self, $file) = @_;
22              
23             $self->schema->add_mapping_resolver(
24             tag => '!yamlscript',
25 2     2   8607 on_create => sub { +{ file => $file }; },
26 2         15 on_data => \&on_data,
27             );
28              
29 2         88 $self->SUPER::load_file($file);
30             }
31              
32             sub on_data {
33 2     2 0 43378 my ($self, $struct) = @_;
34              
35 2         7 my $file = $$struct->{file};
36              
37 2         14 RT->init;
38 2         1074910 $YAMLScript::Reader::read_ys = 1;
39 2         12 RT->rep(qq<
40             yaml-data =:
41             load-file-ys: "$file"
42             >);
43              
44 2         100857 my $data = RT->user_ns->{'yaml-data'}->unbox;
45              
46 2         609 %{$$struct} = %$data;
  2         15  
47             }
48              
49             my $ypp = YAML::PP->new( schema => ['Failsafe'] );
50              
51             1;