NAME

String::Copyright - Representation of text-based copyright statements

VERSION

Version 0.003001

SYNOPSIS

use String::Copyright;

my $copyright = copyright(<<'END');
copr. © 1999,2000 Foo Barbaz <fb@acme.corp> and Acme Corp.
Copyright (c) 2001,2004 Foo (work address) <foo@zorg.corp>
Copyright 2003, Foo B. and friends
© 2000, 2002 Foo Barbaz <foo@bar.baz>
END

print $copyright;

# Copyright 1999-2000 Foo Barbaz <fb@acme.com> and Acme Corp.
# Copyright 2000, 2002 Foo Barbaz and Acme Corp.
# Copyright 2001, 2004 Foo (work address) <foo@zorg.org>
# Copyright 2003 Foo B. and friends

print $copyright->normalize(
  alias  => {
    [ 'foo@bar.baz' => [ 'fb@acme.com', 'foo@zorg.org'] ] }
  mangle => {
    [ 's/Foo Barbaz\K(?= and .*)$/ <foo@bar.baz>/' ] }
);

# Copyright 1999-2000, 2002-2003 Acme Corp.
# Copyright 1999-2004 Foo Barbaz <foo@bar.baz>
# Copyright 2003 Foo B. and friends

DESCRIPTION

String::Copyright Parses common styles of copyright statements and serializes in normalized format.

OPTIONS

Options can be set as an argument to the 'use' statement.

threshold, threshold_before, threshold_after

use String::Copyright { threshold_after => 5 };

Stop parsing after this many lines whithout copyright information, before or after having found any copyright information at all. threshold sets both threshold_before and threshold_after.

By default unset: All lines are parsed.

format( \&sub )

use String::Copyright { format => \&NGU_style } };

sub GNU_style {
    my ( $years, $owners ) = @_;

    return 'Copyright (C) ' . join '  ', $years || '', $owners || '';
}

FUNCTIONS

Exports one function: copyright. This module uses Exporter::Tiny to export functions, which allows for flexible import options; see the Exporter::Tiny documentation for details.

SEE ALSO

BUGS/CAVEATS/etc

String::Copyright operates on strings, not bytes. Data encoded as UTF-8, Latin1 or other formats need to be decoded to strings before use.

Only ASCII characters and © (copyright sign) are directly processed.

If copyright sign is mis-detected or accents or multi-byte characters display wrong, then most likely the data was not decoded into a string.

If ranges or lists of years are not tidied, then maybe it contained non-ASCII whitespace or digits.

AUTHOR

Jonas Smedegaard <dr@jones.dk>

COPYRIGHT AND LICENSE

Derived from App::Licensecheck originally part of the KDE SDK, originally introduced by Stefan Westerfeld <stefan@space.twc.de>; and on the script licensecheck2dep5 part of Debian CDBS tool, written by Jonas Smedegaard.

Copyright © 2007, 2008 Adam D. Barratt

Copyright © 2005-2012, 2016 Jonas Smedegaard

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.

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. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.