Config-Processor

 view release on metacpan or  search on metacpan

t/02-processing.t  view on Meta::CPAN

          'bar_B:val6_2_1',
          'bar_B:val6_2_2',
        ],
        param6_3 => 'bar_A:val6_3',
        param6_4 => 'bar_B:val6_4',
        param6_5 => [
          'zoo:val6_5_1',
          'zoo:val6_5_2',
        ],
      },
    },

    moo => {
      param1 => { var => 'foo.param3' },
      param2 => { var => 'bar.param4' },

      param3 => [
        { var => 'foo.param3' },
        { var => 'bar.param4' },
      ],

      param4 => {
        param4_1 => 'moo:val4_1',
        param4_2 => 'moo:val4_2',
        param4_3 => 'moo:val4_3',
        param4_4 => 'moo:val4_4',
        param4_7 => 1,
        param4_8 => '',
      },

      param4_A => {
        underlay => { var => 'moo.param4' },
        param4_1 => 'moo:val4_A_1',
        param4_2 => 'moo:val4_A_2',
        param4_5 => 'moo:val4_A_5',
      },

      param4_B => {
        underlay => { var => 'moo.param4' },
        param4_3 => 'moo:val4_B_3',
        param4_4 => 'moo:val4_B_4',
        param4_5 => 'moo:val4_B_5',
      },

      param4_C => {
        underlay => { var => 'moo.param4_A' },
        param4_1 => 'moo:val4_C_1',
        param4_6 => 'moo:val4_C_6',
      },

      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_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 {
  my $config_processor = shift;

  my $t_config = $config_processor->load(
      qw( foo_A.yaml foo_B.yml bar_A.json bar_B.jsn zoo.yml jar.json moo.yml
      yar.yml ) );

  my $e_config = {
    foo => {
      param1 => 'foo_B:val1',
      param2 => 'foo_A:val2',

      param4 => [
        'foo_B:val4_1',
        'foo_B:val4_2',
      ],

      param3 => {
        param3_1 => 'zoo:val3_1',
        param3_2 => 'foo_A:val3_2',
        param3_3 => 'foo_B:val3_3',
        param3_4 => 'zoo:val3_4',
      },

      param5 => [
        'foo_B:val5_1',
        { param5_2_1 => 'foo_B:val5_2_1',
          param5_2_2 => 'foo_B:val5_2_2',
        }
      ],

      param6 => {
        param6_1 => 'zoo:val6_1',
        param6_2 => [
          'foo_B:val6_2_1',
          'foo_B:val6_2_2',
        ],
        param6_3 => 'foo_A:val6_3',
        param6_4 => 'foo_B:val6_4',
        param6_5 => [
          'zoo:val6_5_1',
          'zoo:val6_5_2',
        ],
      },
    },

    bar => {
      param1 => 'bar_B:val1',
      param2 => 'bar_A:val2',

      param3 => {



( run in 0.451 second using v1.01-cache-2.11-cpan-df04353d9ac )