7 |
use Text::Iconv; |
use Text::Iconv; |
8 |
use Config::IniFiles; |
use Config::IniFiles; |
9 |
use XML::Simple; |
use XML::Simple; |
10 |
|
use Template; |
11 |
|
|
12 |
use Data::Dumper; |
use Data::Dumper; |
13 |
|
|
61 |
# read global.conf |
# read global.conf |
62 |
# |
# |
63 |
|
|
64 |
$self->{global_config_file} = new Config::IniFiles( -file => 'global.conf' ) || croak "can't open 'global.conf'"; |
my $config = new Config::IniFiles( -file => 'global.conf' ) || croak "can't open 'global.conf'"; |
65 |
|
|
66 |
# read global config parametars |
# read global config parametars |
67 |
foreach my $var (qw( |
foreach my $var (qw( |
71 |
dbi_passwd |
dbi_passwd |
72 |
show_progress |
show_progress |
73 |
my_unac_filter |
my_unac_filter |
74 |
|
output_template |
75 |
)) { |
)) { |
76 |
$self->{global_config}->{$var} = $self->{global_config_file}->val('global', $var); |
$self->{'global_config'}->{$var} = $config->val('global', $var); |
77 |
} |
} |
78 |
|
|
79 |
# |
# |
82 |
|
|
83 |
$self->{indexer_config_file} = new Config::IniFiles( -file => $self->{config_file} ) || croak "can't open '$self->{config_file}'"; |
$self->{indexer_config_file} = new Config::IniFiles( -file => $self->{config_file} ) || croak "can't open '$self->{config_file}'"; |
84 |
|
|
85 |
|
# create UTF-8 convertor for import_xml files |
86 |
$self->{'utf2cp'} = Text::Iconv->new('UTF-8' ,$self->{'code_page'}); |
$self->{'utf2cp'} = Text::Iconv->new('UTF-8' ,$self->{'code_page'}); |
87 |
|
|
88 |
|
# create Template toolkit instance |
89 |
|
$self->{'tt'} = Template->new( |
90 |
|
INCLUDE_PATH => ($self->{'global_config_file'}->{'output_template'} || './output_template'), |
91 |
|
# FILTERS => { |
92 |
|
# 'foo' => \&foo_filter, |
93 |
|
# }, |
94 |
|
EVAL_PERL => 1, |
95 |
|
); |
96 |
|
|
97 |
return $self; |
return $self; |
98 |
} |
} |
99 |
|
|
245 |
ForceContent => 1 |
ForceContent => 1 |
246 |
); |
); |
247 |
|
|
|
print Dumper($self->{'import_xml'}); |
|
|
|
|
248 |
} |
} |
249 |
|
|
250 |
=head2 create_lookup |
=head2 create_lookup |
519 |
Create in-memory data structure which represents layout from C<import_xml>. |
Create in-memory data structure which represents layout from C<import_xml>. |
520 |
It is used later to produce output. |
It is used later to produce output. |
521 |
|
|
522 |
my $ds = $webpac->data_structure($rec); |
my @ds = $webpac->data_structure($rec); |
523 |
|
|
524 |
=cut |
=cut |
525 |
|
|
550 |
$self->{tags_by_order} = \@sorted_tags; |
$self->{tags_by_order} = \@sorted_tags; |
551 |
} |
} |
552 |
|
|
553 |
my $ds; |
my @ds; |
554 |
|
|
555 |
foreach my $field (@sorted_tags) { |
foreach my $field (@sorted_tags) { |
556 |
|
|
572 |
} |
} |
573 |
} |
} |
574 |
|
|
575 |
push @{$ds->{$field}}, $row if ($row); |
if ($row) { |
576 |
|
$row->{'tag'} = $field; |
577 |
|
push @ds, $row; |
578 |
|
} |
579 |
|
|
580 |
} |
} |
581 |
|
|
582 |
print "data_structure => ",Dumper($ds); |
return @ds; |
583 |
|
|
584 |
|
} |
585 |
|
|
586 |
|
=head2 output |
587 |
|
|
588 |
|
Create output from in-memory data structure using Template Toolkit template. |
589 |
|
|
590 |
|
my $text = $webpac->output( template => 'text.tt', data => @ds ); |
591 |
|
|
592 |
|
=cut |
593 |
|
|
594 |
|
sub output { |
595 |
|
my $self = shift; |
596 |
|
|
597 |
|
my $args = {@_}; |
598 |
|
|
599 |
|
confess("need template name") if (! $args->{'template'}); |
600 |
|
confess("need data array") if (! $args->{'data'}); |
601 |
|
|
602 |
|
my $out; |
603 |
|
|
604 |
|
$self->{'tt'}->process( |
605 |
|
$args->{'template'}, |
606 |
|
$args, |
607 |
|
\$out |
608 |
|
) || confess $self->{'tt'}->error(); |
609 |
|
|
610 |
|
return $out; |
611 |
} |
} |
612 |
|
|
613 |
1; |
1; |