/[webpac2]/trunk/lib/WebPAC/Normalize/XML.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/lib/WebPAC/Normalize/XML.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 14 - (hide annotations)
Sun Jul 17 00:04:25 2005 UTC (18 years, 9 months ago) by dpavlin
File size: 2264 byte(s)
small fixes

1 dpavlin 12 package WebPAC::Normalize::XML;
2 dpavlin 8
3     use warnings;
4     use strict;
5    
6 dpavlin 13 use base qw/WebPAC::Common WebPAC::Normalize/;
7 dpavlin 12 use XML::Simple;
8     use Data::Dumper;
9 dpavlin 13 use Text::Iconv;
10 dpavlin 8
11     =head1 NAME
12    
13 dpavlin 12 WebPAC::Normalize::XML - apply XML normalisaton rules
14 dpavlin 8
15     =head1 VERSION
16    
17     Version 0.01
18    
19     =cut
20    
21     our $VERSION = '0.01';
22    
23     =head1 SYNOPSIS
24    
25     This module uses C<conf/normalize/*.xml> files to perform normalisation
26     from input records
27    
28     =cut
29    
30     =head1 FUNCTIONS
31    
32 dpavlin 13 =head2 open
33 dpavlin 8
34 dpavlin 12 Read normalisation rules defined using XML from C<conf/normalize/*.xml> and
35     parse it.
36 dpavlin 8
37 dpavlin 13 my $n = new WebPAC::Normalize::XML;
38     $n->open(
39 dpavlin 12 tag => 'isis',
40     xml_file => '/path/to/conf/normalize/isis.xml',
41 dpavlin 13 );
42 dpavlin 8
43 dpavlin 12 C<tag> defines tag to use within C<xml_file>
44    
45     C<xml_file> defines path to normalize XML.
46    
47 dpavlin 8 =cut
48    
49 dpavlin 13 sub open {
50     my $self = shift;
51 dpavlin 8
52 dpavlin 13 my $arg = {@_};
53 dpavlin 8
54     my $log = $self->_get_logger();
55    
56 dpavlin 12 foreach my $req (qw/tag xml_file/) {
57 dpavlin 13 $log->logconfess("need argument $req") unless $arg->{$req};
58 dpavlin 12 }
59 dpavlin 8
60 dpavlin 13 $self->{'tag'} = $arg->{'tag'};
61     my $xml_file = $arg->{'xml_file'};
62 dpavlin 8
63 dpavlin 12 $log->info("using $xml_file tag <",$self->{'tag'},">");
64 dpavlin 8
65 dpavlin 12 $log->logdie("normalisation xml file '$xml_file' doesn't exist!") if (! -e $xml_file);
66 dpavlin 8
67 dpavlin 12 $self->{'import_xml_file'} = $xml_file;
68 dpavlin 8
69 dpavlin 13 $self->{'import_xml'} = XMLin($xml_file,
70 dpavlin 12 ForceArray => [ $self->{'tag'}, $self->{'tags'}, 'config', 'format' ],
71 dpavlin 8 );
72    
73     $log->debug("import xml is ",sub { Dumper($self->{'import_xml'}) });
74    
75 dpavlin 12 return $self;
76 dpavlin 8 }
77    
78    
79 dpavlin 13 =head2 _x
80 dpavlin 8
81 dpavlin 14 Convert string from XML UTF-8 encoding to code page defined in C<xml_file>.
82 dpavlin 8
83 dpavlin 13 my $text = $n->_x('utf8 text');
84 dpavlin 8
85 dpavlin 13 Default application code page is C<ISO-8859-2>. You will probably want to
86     change that when creating new instance of object based on this one.
87 dpavlin 8
88     =cut
89    
90 dpavlin 13 sub _x {
91 dpavlin 8 my $self = shift;
92 dpavlin 13 my $utf8 = shift || return;
93 dpavlin 8
94 dpavlin 13 # create UTF-8 convertor for import_xml files
95     $self->{'utf2cp'} ||= Text::Iconv->new('UTF-8' ,$self->{'code_page'} || 'ISO-8859-2');
96 dpavlin 8
97 dpavlin 13 return $self->{'utf2cp'}->convert($utf8) ||
98     $self->_get_logger()->logwarn("can't convert '$utf8'");
99 dpavlin 8 }
100    
101    
102     =head1 AUTHOR
103    
104     Dobrica Pavlinusic, C<< <dpavlin@rot13.org> >>
105    
106     =head1 COPYRIGHT & LICENSE
107    
108     Copyright 2005 Dobrica Pavlinusic, All Rights Reserved.
109    
110     This program is free software; you can redistribute it and/or modify it
111     under the same terms as Perl itself.
112    
113     =cut
114    
115 dpavlin 12 1; # End of WebPAC::Normalize::XML

  ViewVC Help
Powered by ViewVC 1.1.26