NAME

Text::BlockLayout - Generate text blocks from a mixture of wrappable and protected lines

SYNOPSIS

use 5.010;
use strict; use warnings;

use Text::BlockLayout;
my $tb = Text::BlockLayout->new(
    max_width   => 30,
    separator   => '. ',
);

$tb->add_text('This text will be wrapped if longer than 30 characters,'
        . ' and potentially be joined with other lines, separted by ". "');
$tb->add_text('Same here');
$tb->add_line('This will also be wrapped, but never be joined with other lines');

say $tb->formatted;

DESCRIPTION

Text::BlockLayout can wrap and format chunks of text for you. For each piece of text you add, you can chose whether it remains on lines on its own (when added with the add_line method), or whether it might be joined with other lines (when added with the add_text method). If the latter is the case, the pieces of text are joined by a customizable separator.

Attributes

Attributes can be passed as named arguments to the constructor, and later set and get with methods of the same name as the attribute.

max_width

The maximal number of characters in a line (not counting the newline character).

Required. Must be a positive integer.

separator

The separator with which two chunks of text are joined if they are put on the same line.

Optional. Will be used as a string. Default: the empty string.

line_continuation_threshold

The number of characters after which a line is considered full, i.e. no extra chunks of text will be added to this line.

Optional. Defaults to two thirds of max_width, rounded to the nearest integer.

wrapper

A callback that receives the max_width and text to be wrapped as arguments, and must return a wrapped string.

Optional. Defaults to a Text::Wrapper-based wrapper.

wrap_predefined_lines

If set to a false value, text added with add_line will not be line-wrapped.

Optional. Defaults to True.

Methods

formatted

Returns the formatted text.

AUTHOR

Moritz Lenz (moritz@faui2k3.org) for the noris network AG.

DEVELOPMENT

This module is under version control. You can find its repository at https://github.com/noris-network/perl5-Text-BlockLayout.

LICENSE

This module and its accompanying files may be used, distributed and modified under the same terms as perl itself.

WARRANTY

There is no warranty for this software, to the extend permitted by applicable law. Use it at your own risk.