summaryrefslogtreecommitdiff
path: root/incantesimi
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2011-10-23 14:10:51 +0100
committerdakkar <dakkar@thenautilus.net>2011-10-23 14:10:51 +0100
commitb0f883f8b8b29265b3a2d8a5577b4e6d9e1357cf (patch)
treef0b15239f9bcc2cb2b1ca03830975274d8a328eb /incantesimi
parentmostra livello 0 (diff)
downloadinventario-b0f883f8b8b29265b3a2d8a5577b4e6d9e1357cf.tar.gz
inventario-b0f883f8b8b29265b3a2d8a5577b4e6d9e1357cf.tar.bz2
inventario-b0f883f8b8b29265b3a2d8a5577b4e6d9e1357cf.zip
gestisci incantesimi di dominio (2ยบ foglio)
Diffstat (limited to 'incantesimi')
-rw-r--r--incantesimi/excel_to_incantesimi.pl65
1 files 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 $/;<DATA>};
+ 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;