NAME
Plack::App::CPAN::Changes - Plack application to view CPAN::Changes object.
SYNOPSIS
use Plack::App::CPAN::Changes;
my $obj = Plack::App::CPAN::Changes->new(%parameters);
my $psgi_ar = $obj->call($env);
my $app = $obj->to_app;
DESCRIPTION
Plack application which prints changelog record. Record is defined by CPAN::Changes object, which is created from some file (like Changes) in CPAN distribution.
METHODS
new
my $obj = Plack::App::CPAN::Changes->new(%parameters);
Constructor.
changes
Set CPAN::Changes object.
Minimal version of object is 0.500002.
It's optional.
Default value is undef.
css
Instance of CSS::Struct::Output object.
Default value is CSS::Struct::Output::Raw instance.
generator
HTML generator string.
Default value is 'Plack::App::CPAN::Changes; Version: __VERSION__'
tags
Instance of Tags::Output object.
Default value is Tags::Output::Raw->new('xml' => 1) instance.
title
Page title.
Default value is 'Login page'.
Returns instance of object.
call
my $psgi_ar = $obj->call($env);
Implementation of view page.
Returns reference to array (PSGI structure).
to_app
my $app = $obj->to_app;
Creates Plack application.
Returns Plack::Component object.
EXAMPLE
use strict;
use warnings;
use CPAN::Changes;
use CPAN::Changes::Entry;
use CPAN::Changes::Release;
use CSS::Struct::Output::Indent;
use Plack::App::CPAN::Changes;
use Plack::Runner;
use Tags::Output::Indent;
my $changes = CPAN::Changes->new(
'preamble' => 'Revision history for perl module Foo::Bar',
'releases' => [
CPAN::Changes::Release->new(
'entries' => [
CPAN::Changes::Entry->new(
'entries' => [
'item #1',
],
'text' => '',
),
CPAN::Changes::Entry->new(
'entries' => [
'item #2',
],
'text' => 'Foo',
),
],
'version' => 0.01,
),
],
);
# Run application.
my $app = Plack::App::CPAN::Changes->new(
'css' => CSS::Struct::Output::Indent->new,
'changes' => $changes,
'generator' => 'Plack::App::CPAN::Changes',
'tags' => Tags::Output::Indent->new(
'preserved' => ['style'],
'xml' => 1,
),
)->to_app;
Plack::Runner->new->run($app);
# Output:
# HTTP::Server::PSGI: Accepting connections at http://0:5000/
# > curl http://localhost:5000/
# <!DOCTYPE html>
# <html lang="en">
# <head>
# <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
# <meta name="generator" content="Plack::App::CPAN::Changes" />
# <meta name="viewport" content="width=device-width, initial-scale=1.0" />
# <title>
# Changes
# </title>
# <style type="text/css">
# * {
# box-sizing: border-box;
# margin: 0;
# padding: 0;
# }
# .changes {
# max-width: 800px;
# margin: auto;
# background: #fff;
# padding: 20px;
# border-radius: 8px;
# box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
# }
# .changes .version {
# border-bottom: 2px solid #eee;
# padding-bottom: 20px;
# margin-bottom: 20px;
# }
# .changes .version:last-child {
# border-bottom: none;
# }
# .changes .version h2, .changes .version h3 {
# color: #007BFF;
# margin-top: 0;
# }
# .changes .version-changes {
# list-style-type: none;
# padding-left: 0;
# }
# .changes .version-change {
# background-color: #f8f9fa;
# margin: 10px 0;
# padding: 10px;
# border-left: 4px solid #007BFF;
# border-radius: 4px;
# }
# </style>
# </head>
# <body>
# <div class="changes">
# <h1>
# Revision history for perl module Foo::Bar
# </h1>
# <div class="version">
# <h2>
# 0.01
# </h2>
# <ul class="version-changes">
# <li class="version-change">
# item #1
# </li>
# <h3>
# [Foo]
# </h3>
# <li class="version-change">
# item #2
# </li>
# </ul>
# </div>
# </div>
# </body>
# </html>
DEPENDENCIES
Plack::Component::Tags::HTML, Plack::Util::Accessor, Tags::HTML::CPAN::Changes.
REPOSITORY
https://github.com/michal-josef-spacek/Plack-App-CPAN-Changes
AUTHOR
Michal Josef Špaček mailto:skim@cpan.org
LICENSE AND COPYRIGHT
© 2024 Michal Josef Špaček
BSD 2-Clause License
VERSION
0.04