From b0f883f8b8b29265b3a2d8a5577b4e6d9e1357cf Mon Sep 17 00:00:00 2001 From: dakkar Date: Sun, 23 Oct 2011 14:10:51 +0100 Subject: =?UTF-8?q?gestisci=20incantesimi=20di=20dominio=20(2=C2=BA=20fogl?= =?UTF-8?q?io)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- incantesimi/excel_to_incantesimi.pl | 65 ++++++++++++++++++++++++++++--------- 1 file changed, 49 insertions(+), 16 deletions(-) diff --git a/incantesimi/excel_to_incantesimi.pl b/incantesimi/excel_to_incantesimi.pl index 95e0c95..674d0b1 100644 --- a/incantesimi/excel_to_incantesimi.pl +++ b/incantesimi/excel_to_incantesimi.pl @@ -9,6 +9,7 @@ use Data::Printer; # excel => latex my %fieldmap = ( spellname => 'name', + name => 'name', level => 'level', school => 'scuola', comp => 'components', @@ -18,7 +19,7 @@ my %fieldmap = ( duration => 'durata', st => 'st', sr => 'sr', - spell => 'descrizione', + description => 'descrizione', special => 'specialcomp', page => 'ref', notes => 'note', @@ -33,25 +34,56 @@ my $parser = Spreadsheet::ParseExcel->new(); my $wb = $parser->parse($input_filename) or die $parser->error; -my $spells = parse_table($wb->worksheet('Incantesimi') - // $wb->worksheet(0)); +sheet_2_latex( + sheet_name => 'Incantesimi', + output_filename => "${output_filename}.incantesimi.tex", +); +sheet_2_latex( + sheet_name => 'Domini', + sheet_idx => 1, + output_filename => "${output_filename}.domini.tex", + skip_col => 1, +); + +{ +my $template; +sub template { + $template //= do {local $/;}; + return $template; +} +} -munge($spells); -p $spells; -my $template = Template->new(); -$template->process( - \*DATA, - { - spells => $spells, +sub sheet_2_latex { + my %opts = ( + sheet_idx => 0, fieldmap => \%fieldmap, - lt => \&latexise, - }, - $output_filename, -) + @_, + ); + + my $spells = parse_table( + $wb->worksheet($opts{sheet_name}) + // $wb->worksheet($opts{sheet_idx}), + $opts{skip_col}, + ); + + munge($spells); + + my $template = Template->new(); + $template->process( + \template(), + { + spells => $spells, + fieldmap => $opts{fieldmap}, + lt => \&latexise, + }, + $opts{output_filename}, + ) or die $template->error; +} sub parse_table { - my ($ws) = @_; + my ($ws,$skip_col) = @_; + $skip_col //= 0; my ($min_col,$max_col) = $ws->col_range(); my ($min_row,$max_row) = $ws->row_range(); @@ -59,6 +91,7 @@ sub parse_table { $min_col .. $max_col; for my $h (@headings) { + $h =~ s{^spell\W}{}i; $h =~ s{\W.*$}{}; $h = lc($h); } @@ -67,7 +100,7 @@ sub parse_table { for my $row ((1+$min_row) .. $max_row) { # allow and skip empty rows - next unless eval { $ws->get_cell($row,$min_col)->value }; + next unless eval { $ws->get_cell($row,$min_col+$skip_col)->value }; my %record; keys @headings; -- cgit v1.2.3