Perl6::Form
El módulo Perl6::Form implementa el operador form
de la versión 6
de Perl, para que pueda ser empleado en programas bajo la versión 5.
El autor es Damian Conway y aunque su última versión está fechada en Febrero del año 2004 puedo dar fé de que es perfectamente utilizable en producción.
Los formatos en Perl son un mecanismo para crear plantillas de texto con campos de longitud fija, que se rellenan con valores procedentes de variables.
Para usar un formato se deben intercalar líneas de texto conteniendo las plantillas con valores para rellenar las plantillas.
1 use Perl6::Form; 2 3 my $name = 'Victor Moral'; 4 my $birth_date = '30/03/1969'; 5 6 my $text = form 'Nombre: {<<<<<<<<<<<<<<}', 7 $name, 8 'Fecha.: {||||||||||||||}', 9 $birth_date; 10 11 print $text;
y lo anterior da como resultado:
Nombre: Victor Moral
Fecha.: 30/03/1969
La documentación del módulo es exahustiva y contiene suficientes ejemplos como para resolver casos complejos ó muy raros. También da ideas sobre cuales son sus límites, pero conviene aclarar algunos términos propios que utiliza.
Campos
Para la función form
un campo está diseñado con las siguientes convenciones:
- Cada campo está delimitado por un par de llaves ({}).
- Dentro de las llaves los caracteres menor qué (<), mayor qué (>), barra vertical (|) y comillas simples (') indican diferentes tipos de de campos monolínea.
- Igualmente los corchetes de apertura ([) y cierre (]), las letras i mayúsculas (I) y las dobles comillas (") hacen lo propio con campos multilínea.
La dirección de los corchetes y los caracteres menor y mayor qué definen el sentido hacia el que fluirá el texto, incluyendo los campos númericos:
{<<<<<<<<<<<} El texto irá a la izquierda {>>>>>>>>>>>} El texto irá a la derecha {>>>>>><<<<<} El texto irá centrado {<<<<<<>>>>>} El texto irá de margen a margen
Un carácter igual (=) en uno ó ambos extremos del formato hará que el texto sea centrado verticalmente, según las líneas que ocupe el formato completo.
- Un carácter subrayado en la misma posición (en cualquiera ó ambos extremos) hará que el texto sea distribuido verticalmente, pero justificándolo hacia abajo.
Referencia
Tipo de campo | Campo monolínea | Campo multilínea (en bloque) | |
---|---|---|---|
A la izquierda | {<<<<<<<<} |
{[[[[[[[[} |
|
A la derecha | {>>>>>>>>} |
{]]]]]]]]} |
|
Centrado | {>>>><<<<} |
{]]]][[[[} |
|
Centrado (formato alternativo) | {||||||||} |
{IIIIIIII} |
|
Completo de margen a margen | {<<<<>>>>} |
{[[]]} |
|
Valores numéricos y varios separadores | |||
Literal | {''''''''} |
{""""} |
|
Numérico | {>>>>>.<<} |
{]]]]].[[} |
|
Numérico (estilo Euro) | {>>>>>,<<} |
{]]]]],[[} |
|
Separador de miles con comas | {>,>>>,>>>.<<} |
{],]]],]]].[[} |
|
Separador de miles con espacios | {> >>> >>>.<<} |
{] ]]] ]]].[[} |
|
Separador de miles con coma estilo Euro | {>.>>>.>>>,<<} |
{].]]].]]],[[} |
|
Separador de miles con comas (al estilo del ejército suizo) | {>'>>>'>>>,<<} |
{]']]]']]],[[} |
|
Separador de miles estilo subcontinental | {>>,>>,>>>.<<} |
{]],]],]]].[[} |
|
Números con signo negativo | |||
Numérico con signo | {->>>.<<<} |
{-]]].[[[} |
|
Numérico con post signo | {>>>>.<<-} |
{]]]].[[-} |
|
Numérico con signo negativo entre paréntesis | {(>>>.<<)} |
{(]]].[[)} |
|
Símbolo monetario como prefijo | {$>>>.<<<} |
{$]]].[[[} |
|
Símbolo monetario como sufijo | {>>>.<<<DM} |
{]]].[[[DM} |
|
Símbolo monetario entre medias | {>>>$<< Esc} |
{]]]$[[ Esc} |
|
En vertical | |||
Justificado a la izquierda y centrado | {=<<<<<<=} |
{=[[[[[[=} |
|
Idem a la derecha | {=>>>>>>=} |
{=]]]]]]=} |
|
Cifra separada con miles (euro) | {>.>>>.>>>,<<=} |
{].]]].]]],[[=} |
|
Justificado a la izquierda y abajo | {_<<<<<<_} |
{_[[[[[[_} |
|
Idem a la derecha y abajo | {_>>>>>>_} |
{_]]]]]]_} |
Glosario
- Format (plantilla) Es un texto que se emplea como plantilla para crear texto. Puede contener cero ó más campos, normalmente acompañado de caracteres literales y espacios en blanco entre ellos.
- Text (texto)
Es el texto creado mediante el reemplazo de los campos de un formato con
los valores especificados. El texto que retorna
form
es un ejemplo de ello. - Field (campo) Una zona de longitud fija dentro de una plantilla, dentro de la cual se introducirán los datos.
- Data (datos) Un texto ó un valor numérico (ó una lista de tales valores) que se interpolan dentro de una plantilla para rellenar un campo particular.
- Single-line field (campo monolínea) Un campo cuya interpolación con el valor correspondiente no ocupará más de una línea.
- Block field (campo en bloque) Es un campo cuya interpolación con el valor correspondiente ocupará una serie de líneas - tantas como necesite - y terminará produciendo un bloque de texto.
- Text block (bloque de texto) Lo forma una columna de texto formada por líneas separadas por caracteres de nueva línea. Es el resultado de interpolar un valor demasiado grande para una única línea en un campo en bloque.
- Column (columna) El espacio necesario, en el dispositivo de salida, para representar un carácter. Éste ocupará una única columna en la mayor parte de los casos, con la obvia excepción de los caracteres de doble ancho CJK.