| DhMakePerl documentation | Contained in the DhMakePerl distribution. |
Debian::Control::Stanza::Binary - binary stanza of Debian source package control file
my $src = Debian::Control::Stanza::Binary->new(\%data);
print $src; # auto-stringification
print $src->Depends; # Debian::Dependencies object
Debian::Control::Stanza::Binary can be used for representation and manipulation
of Package: stanza of Debian source package control files in an
object-oriented way. Converts itself to a textual representation in string
context.
The supported fields for binary stanzas are listed below. For more information
about each field's meaning, consult the section named Source package control
files -- debian/control of the Debian Policy Manual at
http://www.debian.org/doc/debian-policy/
Note that real control fields may contain dashes in their names. These are replaced with underscores.
Depends, Conflicts Breaks, Recommends, Suggests, Enhances,
Replaces, and Pre_Depends fields are converted to objects of
Debian::Dependencies class upon construction.
Two more accessor methods are provided for easier handling of package's short and long description.
Setting them transparently modifies Description. Note that the value of long_description is "unmangled", that is without leading spaces, and empty lines are empty. Description on the other hand is just as it looks in a regular debian/control file - the long part is indented with a single space and empty lines are replaced with dots.
Creates a new Debian::Control::Stanza::Binary object and optionally initializes it with the supplied data.
Debian::Control::Stanza::Source inherits most of its functionality from Debian::Control::Stanza
Copyright (C) 2009, 2010 Damyan Ivanov dmn@debian.org
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
| DhMakePerl documentation | Contained in the DhMakePerl distribution. |
package Debian::Control::Stanza::Binary; use strict; use base 'Debian::Control::Stanza'; use constant fields => qw( Package Architecture Section Priority Essential Depends Recommends Suggests Enhances Replaces Pre_Depends Conflicts Breaks Provides Description _short_description _long_description );
sub set { my ( $self, $field, @value ) = @_; my $res = $self->SUPER::set( $field, @value ); # re-split description in it was set if ( $field eq 'Description' ) { $self->_split_description; } elsif ( $field eq '_short_description' or $field eq '_long_description' ) { $self->_format_description; } $res; } sub short_description { shift->_short_description(@_); } sub long_description { shift->_long_description(@_); } sub _format_description { my $self = shift; my $short = $self->_short_description; my $long = $self->_long_description; if( defined($long) ) { $long =~ s/\n\n/\n.\n/sg; # add spacing between paragraphs $long =~ s/^/ /mg; # prepend every line with a space } # use SUPER::set to not trigger our implementation, which would cause # endless loop (setting short_description updates Description, which is # then split) $self->SUPER::set( 'Description', join( "\n", map { $_ // () } ( $short, $long ) ) ); } sub _split_description { my $self = shift; my ( $short, $long ) = split( /\n/, $self->Description, 2 ); $long =~ s/^ //mg; $long =~ s/^ \.$//mg; # use SUPER::set to not trigger our implementation, which would cause # endless loop (setting short_description updates Description, which is # then split) $self->SUPER::set( '_short_description', $short ); $self->SUPER::set( '_long_description', $long ); } 1;