The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Changes::Change - Changes object class

SYNOPSIS

    use Changes::Change;
    my $this = Changes::Change->new(
        line => 12,
        marker => '-',
        max_width => 68,
        spacer1 => "\t",
        # Defaults to just one space
        spacer2 => undef,
        text => "This is a change note",
        wrapper => sub
        {
            my( $text, $width ) = @_;
            require Text::Wrap;
            local $Text::Wrap::columns = $width;
            my $result = Text::Wrap::wrap( '', '', "$text" );
            return( $result );
        }
    ) || die( Changes::Change->error, "\n" );

VERSION

    v0.1.1

DESCRIPTION

This represents a change line within a release. A change line is usually represented by some indentation spaces, followed by a marker such as a dash, a space and a text:

    - This is a change note

A change text can be written on a very long line or broken into lines of max_width. You can change this value with "max_width" and by default it is 0, which means it will be all on one line.

METHODS

as_string

Returns a scalar object of the change line. This information is cached unless other information has been changed.

Also, if nothing was changed and "raw" is set with a value, that value will be returned instead.

If "wrapper" is defined, the perl code reference set will be called by providing it the text of the change and the adjusted width to use. The actual width is the width of the change text with any leading spaces and characters as specified with "spacer1", "spacer2" and "marker".

If the callback dies, this exception will be caught and displayed as a warning if use warnings is enabled.

If no callback is specified, it will attempt to load Text::Wrap (a perl core module) and Text::Format in this order.

If none of it is possible, the change text will simply not be wrapped.

If an error occurred, it returns an error

The resulting string is terminated by the carriage return sequence defined with "nl"

It returns a scalar object

line

Sets or gets an integer representing the line number where this line containing the change information was found in the original Changes file. If this object was instantiated separately, then obviously this value will be undef

marker

Sets or gets the character representing the marker preceding the text of the change. This is usually a dash.

It returns a scalar object

max_width

Sets or gets the change line maximum width. The line width includes any spaces and characters at the beginning of the line, as set with "spacer1", "spacer2" and "marker" and not just the text of the change itself.

It returns a number object

nl

Sets or gets the new line character, which defaults to \n

It returns a number object

normalise

This returns a "normalised" version of the change text, which means that if the change text is wrapped and has new lines with possibly preceding and trailing spaces, those will be replaced by a single space.

It does not modify the original change text.

It returns a scalar object

prefix

Read-only. This returns what precedes the text of the change, which is an optional leading space, and a marker such as a dash.

It returns a scalar object

raw

Sets or gets the raw version of the line as found in the Changes file. If set and nothing has been changed, this will be returned by "as_string" instead of computing the formatting of the change.

It returns a scalar object

spacer1

Sets or gets the leading space, if any, found before the marker.

It returns a scalar object

spacer2

Sets or gets the space found after the marker and before the text of the change.

It returns a scalar object

text

Sets or gets the text o the change. If the text is broken into multiple lines in the Changes file, it will be collected as on scalar object here.

It returns a scalar object

wrapper

Sets or gets a code reference as a callback mechanism to return a properly wrapped change text. This allows flexibility beyond the default use of Text::Wrap and Text::Format

AUTHOR

Jacques Deguest <jack@deguest.jp>

SEE ALSO

Changes, Changes::Release, Changes::Group, Changes::Version, Changes::NewLine

COPYRIGHT & LICENSE

Copyright(c) 2022 DEGUEST Pte. Ltd.

All rights reserved

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