ruby - spanish - ¿Qué otros idiomas tienen características y/o bibliotecas similares al formato de Perl?
strftime ruby (3)
Puede que sea una minoría aquí, pero disfruto mucho los formatos de Perl . Me gusta especialmente poder envolver un texto largo dentro de una columna ("~~ ^ <<<<<<<<<<<<<<<<" escribe cosas). ¿Hay otros lenguajes de programación que tengan características similares, o bibliotecas que implementen características similares? Estoy especialmente interesado en cualquier biblioteca que implemente algo similar para Ruby, pero también tengo curiosidad acerca de otras opciones.
Me parece recordar algo similar en Fortran cuando lo utilicé hace muchos años (sin embargo, puede haber sido una biblioteca de terceros).
En cuanto a otras opciones en Perl, eche un vistazo a Perl6::Form
.
La función de form
reemplaza el format
en Perl6. Damian Conway en " Mejores prácticas Perl " recomienda usar Perl6::Form
con Perl5 citando los siguientes problemas con el format
....
- estáticamente definido
- confía en las variables globales para config y pkg vars para los datos que formatean
- utiliza filehandles con nombre (solo)
- no recursivo o reentrante
Aquí hay una variación Perl6::Form
en el ejemplo de Ruby por Robert Gamble ....
use Perl6::Form;
my ( $month, $day, $year ) = qw''Sep 18 2001'';
my ( $num, $numb, $location, $toe_size );
for ( "Market", "Home", "Eating Roast Beef", "Having None", "On the way home" ) {
push @$numb, ++$num;
push @$location, $_;
push @$toe_size, $num * 3.5;
}
print form
'' Piggy Locations for {>>>}{>>}, {<<<<}'',
$month, $day, $year ,
"",
'' Number: location toe size'',
'' --------------------------------------'',
''{]}) {[[[[[[[[[[[[[[[} {].0} '',
$numb, $location, $toe_size;
FormatR proporciona formatos tipo Perl para Ruby.
Aquí hay un ejemplo de la documentación:
require "formatr"
include FormatR
top_ex = <<DOT
Piggy Locations for @<< @#, @###
month, day, year
Number: location toe size
-------------------------------------------
DOT
ex = <<TOD
@) @<<<<<<<<<<<<<<<< @#.##
num, location, toe_size
TOD
body_fmt = Format.new (top_ex, ex)
body_fmt.setPageLength(10)
num = 1
month = "Sep"
day = 18
year = 2001
["Market", "Home", "Eating Roast Beef", "Having None", "On the way home"].each {|location|
toe_size = (num * 3.5)
body_fmt.printFormat(binding)
num += 1
}
Que produce:
Piggy Locations for Sep 18, 2001
Number: location toe size
-------------------------------------------
1) Market 3.50
2) Home 7.00
3) Eating Roast Beef 10.50
4) Having None 14.00
5) On the way home 17.50
Existe la función Lisp (format ...)
. Es compatible con bucles, condicionales y un montón de otras cosas divertidas.
por ejemplo (copiado del enlace de arriba):
(defparameter *english-list*
"~{~#[~;~a~;~a and ~a~:;~@{~a~#[~;, and ~:;, ~]~}~]~}")
(format nil *english-list* ''()) ;'' ==> ""
(format nil *english-list* ''(1)) ;'' ==> "1"
(format nil *english-list* ''(1 2)) ;'' ==> "1 and 2"
(format nil *english-list* ''(1 2 3)) ;'' ==> "1, 2, and 3"
(format nil *english-list* ''(1 2 3 4));'' ==> "1, 2, 3, and 4"