Config-Processor
view release on metacpan or search on metacpan
underlay: { var: .default }
host: "stat-slave.mydb.com"
username: "stat_reader"
password: "stat_reader_pass"
test:
underlay: { var: .default_test }
username: "test"
password: "test_pass"
- overlay
Merges specified configuration parameters with parameters located at the same
context. Configuration parameters from the directive overrides parameters from
the context. `overlay` directive most usefull in combination with `var` and
`include` directives.
For example, you can use `overlay` directive to temporaly overriding regular
configuration parameters.
myapp:
db:
connectors:
default:
port: "1234"
dbname: "stat"
options:
PrintWarn: 0
test:
host: "localhost"
port: "4321"
stat_master:
underlay: { var: .default }
host: "stat-master.mydb.com"
username: "stat_writer"
password: "stat_writer_pass"
overlay: { var: .test }
stat_slave:
underlay: { var: .default }
host: "stat-slave.mydb.com"
username: "stat_reader"
password: "stat_reader_pass"
overlay: { var: .test }
To disable overriding just assign to `test` connector empty hash.
test: {}
# AUTHOR
Eugene Ponizovsky, <ponizovsky@gmail.com>
# COPYRIGHT AND LICENSE
lib/Config/Processor.pm view on Meta::CPAN
elsif ( defined $node->{include} ) {
$node = $self->_build_tree( $node->{include} );
}
else {
if ( defined $node->{underlay} ) {
my $layer = delete $node->{underlay};
$layer = $self->_process_layer( $layer, $ancs );
$node = $self->{_merger}->merge( $layer, $node );
}
if ( defined $node->{overlay} ) {
my $layer = delete $node->{overlay};
$layer = $self->_process_layer( $layer, $ancs );
$node = $self->{_merger}->merge( $node, $layer );
}
}
}
return $node;
}
sub _process_layer {
lib/Config/Processor.pm view on Meta::CPAN
underlay: { var: .default }
host: "stat-slave.mydb.com"
username: "stat_reader"
password: "stat_reader_pass"
test:
underlay: { var: .default_test }
username: "test"
password: "test_pass"
=item overlay
Merges specified configuration parameters with parameters located at the same
context. Configuration parameters from the directive overrides parameters from
the context. C<overlay> directive most usefull in combination with C<var> and
C<include> directives.
For example, you can use C<overlay> directive to temporaly overriding regular
configuration parameters.
myapp:
db:
connectors:
default:
port: "1234"
dbname: "stat"
options:
PrintWarn: 0
lib/Config/Processor.pm view on Meta::CPAN
test:
host: "localhost"
port: "4321"
stat_master:
underlay: { var: .default }
host: "stat-master.mydb.com"
username: "stat_writer"
password: "stat_writer_pass"
overlay: { var: .test }
stat_slave:
underlay: { var: .default }
host: "stat-slave.mydb.com"
username: "stat_reader"
password: "stat_reader_pass"
overlay: { var: .test }
To disable overriding just assign to C<test> connector empty hash.
test: {}
=back
=head1 AUTHOR
Eugene Ponizovsky, E<lt>ponizovsky@gmail.comE<gt>
t/02-processing.t view on Meta::CPAN
param4_D => {
underlay => { var => 'moo.param4_B' },
param4_3 => 'moo:val4_D_3',
param4_6 => 'moo:val4_D_6',
},
param4_E => {
param4_1 => 'moo:val4_E_1',
param4_2 => 'moo:val4_E_2',
param4_5 => 'moo:val4_E_5',
overlay => { var => 'moo.param4' },
},
param4_F => {
param4_3 => 'moo:val4_F_3',
param4_4 => 'moo:val4_F_4',
param4_5 => 'moo:val4_F_5',
overlay => { var => 'moo.param4' },
},
param4_G => {
param4_1 => 'moo:val4_G_1',
param4_6 => 'moo:val4_G_6',
overlay => { var => 'moo.param4_E' },
},
param4_H => {
param4_3 => 'moo:val4_H_3',
param4_6 => 'moo:val4_H_6',
overlay => { var => 'moo.param4_F' },
},
param5 => {
param5_1 => { include => 'includes/moo_A.yml' },
param5_2 => { include => 'includes/moo_B.json' },
param5_3 => { include => 'includes/*' },
},
param6_A => {
underlay => [
t/02-processing.t view on Meta::CPAN
param6_4 => 'moo:val6_4',
},
],
param6_5 => 'moo:val6_5',
param6_6 => 'moo:val6_6',
},
param6_B => {
param6_5 => 'moo:val6_5',
param6_6 => 'moo:val6_6',
overlay => [
{ var => 'foo.param6' },
{ include => 'includes/moo_C.yml' },
{ param6_1 => 'moo:val6_1',
param6_4 => 'moo:val6_4',
}
],
},
param6_C => {
underlay => [
'moo:val6_C_1',
'moo:val6_C_2',
],
param6_2 => 'moo:val6_C_2',
param6_1 => 'moo:val6_C_1',
},
param6_D => {
param6_1 => 'moo:val6_D_1',
param6_2 => 'moo:val6_D_2',
overlay => [
'moo:val6_D_1',
'moo:val6_D_2',
],
},
param6_E => {
underlay => 'moo:val6_E_3',
param6_1 => 'moo:val6_E_1',
param6_2 => 'moo:val6_E_2',
},
param6_F => {
param6_1 => 'moo:val6_F_1',
param6_2 => 'moo:val6_F_2',
overlay => 'moo:val6_F_3',
},
},
};
is_deeply( $t_config, $e_config, 'directive processing: off' );
return;
}
sub t_complete_processing {
t/etc/moo.yml view on Meta::CPAN
param4_D:
underlay: { var: moo.param4_B }
param4_3: "moo:val4_D_3"
param4_6: "moo:val4_D_6"
param4_E:
param4_1: "moo:val4_E_1"
param4_2: "moo:val4_E_2"
param4_5: "moo:val4_E_5"
overlay: { var: moo.param4 }
param4_F:
param4_3: "moo:val4_F_3"
param4_4: "moo:val4_F_4"
param4_5: "moo:val4_F_5"
overlay: { var: moo.param4 }
param4_G:
param4_1: "moo:val4_G_1"
param4_6: "moo:val4_G_6"
overlay: { var: moo.param4_E }
param4_H:
param4_3: "moo:val4_H_3"
param4_6: "moo:val4_H_6"
overlay: { var: moo.param4_F }
param5:
param5_1: { include: includes/moo_A.yml }
param5_2: { include: includes/moo_B.json }
param5_3: { include: includes/* }
param6_A:
underlay:
- { var: foo.param6 }
- { include: includes/moo_C.yml }
- param6_1: "moo:val6_1"
param6_4: "moo:val6_4"
param6_5: "moo:val6_5"
param6_6: "moo:val6_6"
param6_B:
param6_5: "moo:val6_5"
param6_6: "moo:val6_6"
overlay:
- { var: foo.param6 }
- { include: includes/moo_C.yml }
- param6_1: "moo:val6_1"
param6_4: "moo:val6_4"
param6_C:
underlay:
- "moo:val6_C_1"
- "moo:val6_C_2"
param6_1: "moo:val6_C_1"
param6_2: "moo:val6_C_2"
param6_D:
param6_1: "moo:val6_D_1"
param6_2: "moo:val6_D_2"
overlay:
- "moo:val6_D_1"
- "moo:val6_D_2"
param6_E:
underlay: 'moo:val6_E_3'
param6_1: "moo:val6_E_1"
param6_2: "moo:val6_E_2"
param6_F:
param6_1: "moo:val6_F_1"
param6_2: "moo:val6_F_2"
overlay: 'moo:val6_F_3'
t/etc/yar.yml view on Meta::CPAN
yar:
param1:
underlay:
- { var: moo.param6_A }
- { include: yar_A.yml }
- param1_4: "yar:${jar.param6.param6_2.0}"
param1_5: "yar:val1_5"
param1_6: "yar:${jar.param1}"
param1_7: "yar:val1_7"
overlay:
- { var: moo.param5 }
- { var: moo.param4_A }
- param1_8: "yar:${jar.param2}"
param1_9: "yar:val1_9"
param2:
underlay:
- { include: yar_B.yml }
- { include: yar_C.yml }
( run in 0.895 second using v1.01-cache-2.11-cpan-df04353d9ac )