Config-BuildHelper version 0.01
===============================

This module provides a tool to help you generate configuration files for a 
large number of hosts where the hosts share common configuration elements but
edge cases are still handled gracefully. 

EXAMPLE

use strict;
use warnings;

use Config::BuildHelper;

my $yaml = <<EOY;
---
name: Root
data:
      config: [[SET, CHECK_BRAKES, CHECK_SPARK_PLUGS]]
children:
    - name: Car
      match: 
            model: "^(\\d{3}[a-z]?|[A-Z]\\d)\$"
      data:
            config: [[ADD, ROTATE_TIRES]]
      children:
          - name: Diesel
            match:
                  model: "d\$"
            data: 
                  config: [[REMOVE, CHECK_SPARK_PLUGS], [ADD, CHECK_GLOW_PLUGS]]
    - name: Motorcycle
      match:
            model: "^[A-Z]\\d{3,4}[^\\d]"
      data: 
            config: [[ADD, CHECK_REAR_TIRE_ALIGNMENT]]
EOY

my @customer_vehicles = (
	{ customer_id => 1, model => '325i' },
	{ customer_id => 2, model => '535d' },
	{ customer_id => 3, model => 'M3' },
	{ customer_id => 4, model => 'R1200RT' },
);

my $helper = Config::BuildHelper->new(yaml => $yaml);

for (@customer_vehicles) {
	my $result = $helper->process($_);

	print "$_->{customer_id}: ";
	
	if (! defined($result->class)) {
		print "could not classify data\n";
		next;
	}

	print "$_->{model} ", join(' ', $result->config_list), "\n";
}

__END__

Which will output:

1: 325i CHECK_SPARK_PLUGS ROTATE_TIRES CHECK_BRAKES
2: 535d ROTATE_TIRES CHECK_BRAKES CHECK_GLOW_PLUGS
3: M3 CHECK_SPARK_PLUGS ROTATE_TIRES CHECK_BRAKES
4: R1200RT CHECK_SPARK_PLUGS CHECK_BRAKES CHECK_REAR_TIRE_ALIGNMENT


INSTALLATION

To install this module type the following:

   perl Makefile.PL
   make
   make test
   make install

DEPENDENCIES

This module requires these other modules and libraries:

  Data::Classifier

COPYRIGHT AND LICENCE

Copyright (C) 2007 by Tyler Riddle <triddle@gmail.com>.

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.8.5 or,
at your option, any later version of Perl 5 you may have available.