File Coverage

blib/lib/Config/Model/Role/NodeLoader.pm
Criterion Covered Total %
statement 29 30 96.6
branch 3 4 75.0
condition 3 5 60.0
subroutine 8 8 100.0
pod 1 1 100.0
total 44 48 91.6


line stmt bran cond sub pod time code
1             #
2             # This file is part of Config-Model
3             #
4             # This software is Copyright (c) 2005-2022 by Dominique Dumont.
5             #
6             # This is free software, licensed under:
7             #
8             # The GNU Lesser General Public License, Version 2.1, February 1999
9             #
10              
11             # ABSTRACT: Load Node element in configuration tree
12              
13             use Mouse::Role;
14 59     59   28113 use strict;
  59         153  
  59         424  
15 59     59   17303 use warnings;
  59         152  
  59         964  
16 59     59   259 use Carp;
  59         124  
  59         1370  
17 59     59   290 use 5.10.0;
  59         133  
  59         3180  
18 59     59   757  
  59         218  
19             use Mouse::Util;
20 59     59   332 use Log::Log4perl qw(get_logger :levels);
  59         112  
  59         411  
21 59     59   4171  
  59         138  
  59         448  
22             my $load_logger = get_logger("TreeLoad");
23              
24             my ($self, %params) = @_ ;
25              
26 764     764 1 3911 my $config_class_name = $params{config_class_name};
27             my $config_class = $self->config_model->get_model_clone($config_class_name) ;
28 764         1831 my $node_class = $config_class->{class} || 'Config::Model::Node';
29 764         4362 $load_logger->debug("Loading $config_class_name ". $self->location . " with $node_class");
30 764   100     58797 Mouse::Util::load_class($node_class);
31 764         5824  
32 764         9012 if (delete $params{check}) {
33             carp "load_node; drop check param. Better let node query the instance";
34 764 50       14636 }
35 0         0 $params{gist} //= $config_class->{gist} if $config_class->{gist};
36             return $node_class->new(%params) ;
37 764 100 33     2357 }
38 764         25598  
39             1;
40              
41              
42             =pod
43              
44             =encoding UTF-8
45              
46             =head1 NAME
47              
48             Config::Model::Role::NodeLoader - Load Node element in configuration tree
49              
50             =head1 VERSION
51              
52             version 2.152
53              
54             =head1 SYNOPSIS
55              
56             $self->load_node( config_class_name => "...", %other_args);
57              
58             =head1 DESCRIPTION
59              
60             Role used to load a node element using L<Config::Model::Node> (default behavior).
61              
62             If the config class overrides the default implementation, ( C<class> parameter ), the
63             override class is loaded and used to create the node.
64              
65             =head1 METHODS
66              
67             =head2 load_node
68              
69             Creates a node object using all the named parameters passed to load_node. One of these
70             parameter must be C<config_class_name>
71              
72             =head1 AUTHOR
73              
74             Dominique Dumont
75              
76             =head1 COPYRIGHT AND LICENSE
77              
78             This software is Copyright (c) 2005-2022 by Dominique Dumont.
79              
80             This is free software, licensed under:
81              
82             The GNU Lesser General Public License, Version 2.1, February 1999
83              
84             =cut