NAME

version::Normal - More normal forms for version objects

VERSION

version 0.1.1

SYNOPSIS

    use version::Normal;

    # 'v0.400'
    version->parse('0.4')->normal2;

    # '0.400.0'
    version->parse('0.4')->normal3;

DESCRIPTION

This is alpha software. The API may change.

This module loads the version module and adds two methods to its objects. Those methods implement normal forms akin to the standard normal() method.

Furthermore, these normal forms have the following property:

    NORMAL(v1) = NORMAL(v2)   if   v1 == v2

Notice that this property does not hold for normal(). For example, for two version numbers like 'v1.0.0' and 'v1.0.0.0' which satisfy

    version->parse('v1.0.0') == version->parse('v1.0.0.0')

the following table of results can be computed

    V                               'v1.0.0'         'v1.0.0.0'

    version->parse(V)->normal()     'v1.0.0'    ≠    'v1.0.0.0'
    version->parse(V)->normal2()    'v1.0'      =    'v1.0'
    version->parse(V)->normal3()    '1.0.0'     =    '1.0.0'

METHODS

version::Normal implements the following methods and installs them into version namespace.

normal2

    $string = $version->normal2(); 

Returns a string with a normalized dotted-decimal form with a leading-v, at least 2 components, and no superfluous trailing 0.

Some examples are:

    V          version->parse(V)->normal2()

    0.1        v0.100
    v0.1       v0.1
    v1         v1.0
    0.010      v0.10
    1.010      v1.10
    0.3.10     v0.3.10
    v0.0.0.0   v0.0
    v0.1.0.0   v0.1

This form looks good when describing the version of a software component for humans to read (eg. at Changes file, --version output, etc.)

normal3

    $string = $version->normal3(); 

Returns a string with a normalized dotted-decimal form with no leading-v, at least 3 components, and no superfluous trailing 0.

Some examples are:

    V          version->parse(V)->normal3()

    0.1        0.100.0
    v0.1       0.1.0
    v1         1.0.0
    0.010      0.10.0
    1.010      1.10.0
    0.3.10     0.3.10
    v0.0.0.0   0.0.0
    v0.1.0.0   0.1.0

This form is appropriate for distribution tarball names (like "version-Normal-0.1.0.tar.gz") – only digits and dots and no need for special interpretation of a leading-v.

SEE ALSO

version

ACKNOWLEDGEMENTS

The development of this library has been partially sponsored by Connectivity, Inc.

AUTHOR

Adriano Ferreira <ferreira@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2018 by Adriano Ferreira.

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