package Module::Changes::Validator::YAML;

use warnings;
use strict;
use Kwalify ();
use YAML;;


our $VERSION = '0.05';


use base 'Module::Changes::Base';


my $schema = Load(<<EOSCHEMA);
type: map
mapping:
    global:
        type: map
        mapping:
            name:
                type: str
                required: yes
    releases:
        type: seq
        sequence:
            - type: map
              mapping:
                  version:
                      type: scalar
                      required: yes
                  author:
                      type: str
                      required: yes
                  changes:
                      type: seq
                      sequence:
                        - type: str
                  date:
                      type: str
                      required: yes
                  tags:
                      type: seq
                      sequence:
                        - type: str
EOSCHEMA


sub validate {
    my ($self, $yaml) = @_;
    Kwalify::validate($schema, $yaml);
}


1;

__END__

=head1 NAME

Module::Changes::Formatter::YAML - format a Changes object as YAML

=head1 SYNOPSIS

    use Module::Changes;
    my $formatter = Module::Changes->make_object_for_type('formatter_yaml');
    $formatter->format($changes);

=head1 DESCRIPTION

This class can format a Changes object as YAML. The layout of the YAML file is
documented in L<Module::Changes>.

=head1 METHODS

This class inherits all methods from L<Module::Changes::Formatter>.

=over 4

=item format

    print $formatter->format($changes);

Takes a changes object and formats it as YAML, then returns the result string.

=back

=head1 TAGS

If you talk about this module in blogs, on del.icio.us or anywhere else,
please use the C<modulechanges> tag.

=head1 BUGS AND LIMITATIONS

No bugs have been reported.

Please report any bugs or feature requests to
C<bug-module-changes@rt.cpan.org>, or through the web interface at
L<http://rt.cpan.org>.

=head1 INSTALLATION

See perlmodinstall for information and options on installing Perl modules.

=head1 AVAILABILITY

The latest version of this module is available from the Comprehensive Perl
Archive Network (CPAN). Visit <http://www.perl.com/CPAN/> to find a CPAN
site near you. Or see <http://www.perl.com/CPAN/authors/id/M/MA/MARCEL/>.

=head1 AUTHOR

Marcel GrE<uuml>nauer, C<< <marcel@cpan.org> >>

=head1 COPYRIGHT AND LICENSE

Copyright 2007 by Marcel GrE<uuml>nauer

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

=cut