NAME

CPAN::Changes::Parser::KeepAChangeLog - Parser for Keep a Changelog formatted files

SYNOPSIS

use CPAN::Changes::Parser::KeepAChangeLog;

my $parser = CPAN::Changes::Parser::KeepAChangeLog->new;
my $changes = $parser->parse_file('CHANGELOG.md');

for my $release ($changes->releases) {
    printf "%s %s\n", $release->version, $release->date;
    for my $entry ($release->entries) {
        printf "  - %s\n", $entry->text;
    }
}

DESCRIPTION

This module extends CPAN::Changes::Parser to parse changelog files that follow the Keep a Changelog format (https://keepachangelog.com/) version 1.1.0.

Keep a Changelog uses Markdown-style formatting with specific conventions for releases and change categories. This parser transforms that format into CPAN::Changes objects that can be used within the Perl ecosystem.

Supported Format Features

  • Release headings: ## [version] - date or ## [Unreleased]

  • Category headings: ### Added, ### Fixed, etc.

  • Bulleted lists with - or *

  • Link reference definitions (automatically filtered out)

METHODS

This module inherits all methods from CPAN::Changes::Parser.

parse_string

my $changes = $parser->parse_string($changelog_string);

Parses a Keep a Changelog formatted string and returns a CPAN::Changes object, or undef if the string does not appear to be in Keep a Changelog format.

ATTRIBUTES

version_like

This attribute is overridden to recognize "Unreleased" as a valid version identifier.

SEE ALSO

AUTHOR

Dave Cross <dave@perlhacks.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2026 by Dave Cross.

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