Actions Status MetaCPAN Release

NAME

Text::ANSI::Printf - printf function for string with ANSI sequence

VERSION

Version 2.02

SYNOPSIS

use Text::ANSI::Printf;
Text::ANSI::Printf::printf FORMAT, LIST
Text::ANSI::Printf::sprintf FORMAT, LIST

use Text::ANSI::Printf qw(ansi_printf ansi_sprintf);
ansi_printf FORMAT, LIST
ansi_sprintf FORMAT, LIST

DESCRIPTION

Text::ANSI::Printf is a almost-printf-compatible library with a capability of handling:

- ANSI terminal sequences
- Multi-byte wide characters
- Backspaces

You can give any string including these data as an argument for printf and sprintf funcitons. Each field width is calculated based on its visible appearance.

For example,

printf "| %-5s | %-5s | %-5s |\n", "Red", "Green", "Blue";

this code produces the output like:

| Red   | Green | Blue  |

However, if the arguments are colored by ANSI sequence,

printf("| %-5s | %-5s | %-5s |\n",
       "\e[31mRed\e[m", "\e[32mGreen\e[m", "\e[34mBlue\e[m");

this code produces undsirable result:

| Red | Green | Blue |

ansi_printf can be used to properly format colored text.

use Text::ANSI::Printf 'ansi_printf';
ansi_printf("| %-5s | %-5s | %-5s |\n",
       "\e[31mRed\e[m", "\e[32mGreen\e[m", "\e[34mBlue\e[m");

It does not matter if the result is shorter than the original text. Next code produces [R] [G] [B] in proper color.

ansi_printf("[%.1s] [%.1s] [%.1s]\n",
       "\e[31mRed\e[m", "\e[32mGreen\e[m", "\e[34mBlue\e[m");

FUNCTIONS

IMPLEMENTATION NOTES

This module uses Text::Conceal and Text::ANSI::Fold::Util internally.

SEE ALSO

Term::ANSIColor::Concise, https://github.com/tecolicom/Term-ANSIColor-Concise

Text::Conceal, https://github.com/kaz-utashiro/Text-Conceal

Text::ANSI::Fold::Util, https://github.com/tecolicom/Text-ANSI-Fold-Util

Text::ANSI::Printf, https://github.com/tecolicom/Text-ANSI-Printf

App::ansicolumn, https://github.com/tecolicom/App-ansicolumn

App::ansiecho, https://github.com/tecolicom/App-ansiecho

https://en.wikipedia.org/wiki/ANSI_escape_code

AUTHOR

Kazumasa Utashiro

LICENSE

Copyright 2020-2023 Kazumasa Utashiro.

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