1 |
=head1 NAME |
2 |
|
3 |
Quick overview of things that are new in v2.x of WebPAC |
4 |
|
5 |
=head1 DESCRIPTION |
6 |
|
7 |
This document will describe new features in WebPAC version v2.x. |
8 |
It will also attempt to document upgrade procedure to migrate |
9 |
WebPAC v1.x installations to new v2.x. |
10 |
|
11 |
=head2 Input file handling |
12 |
|
13 |
Database files are now read in memory (using swap if not enough |
14 |
memory is not available) and used from there. |
15 |
|
16 |
Also, in-memory structure will be dumped to temporary disk |
17 |
cache, so that unchanged databases won't be re-read (and parsed) if source |
18 |
database hasn't changed. Nice consequence of this is that memory lookups |
19 |
are now for free (see below). |
20 |
|
21 |
=head2 Two-step processing of databases |
22 |
|
23 |
In first step database is read and in-memory structure is created (or |
24 |
read from on-disk cache if source database hasn't changed). |
25 |
|
26 |
In second step output formats are created. |
27 |
|
28 |
=head2 Lookups |
29 |
|
30 |
For a start, lookup files are no longer supported. Since memory lookups |
31 |
are newer and more powerful (for example, each key can have more than |
32 |
one value) it's not a great loss. However, you will have to re-write |
33 |
your C<import_xml> files if you use lookup files to use memory lookups. |
34 |
|
35 |
Lookups B<are not> specified by C<[v900^4]> as in v1.x. Now, you have |
36 |
to use something like C<lookup{v900^4}>. Recursive lookups are also |
37 |
possible: C<lookup{foo:lookup{v900^4}}>. |
38 |
|
39 |
Memory lookups (referred as lookups for new versions of WebPAC) are now |
40 |
always available. Since whole database is available when creating |
41 |
output linking should be much easier now. |
42 |
|
43 |
However, using new lookups require to define lookups in different way. |
44 |
Additional benefit of that is conditional insert into lookup using eval |
45 |
(TODO: explain new lookup format). |
46 |
|
47 |
If you have any lookups in your tag (e.g. <isis>lookup{v900^5}</isis>) |
48 |
smart delimiters will be turned off (this behaviour is consistent with |
49 |
old in v1.x if you use C<type="lookup*"> or C<filter="mem_lookup">). |
50 |
|
51 |
=head2 Field definition in C<import_xml> |
52 |
|
53 |
Field definitions in C<import_xml> files has changed. Previously, you could |
54 |
write something like C<250a> and expect to get data from field B<250> subfield |
55 |
B<a>. Now you have to write C<v250^a> which is more ISIS-like and easier to |
56 |
parse. Don't be afraid, there is migration script in C<import_xml> to do |
57 |
this task for you. |
58 |
|
59 |
=head2 Templates |
60 |
|
61 |
Templateing engine has changed. WebPAC doesn't use C<HTML::Template> anymore, |
62 |
but Template Toolkit. TT proved to be workhorse for many tasks |
63 |
and limitations of C<HTML::Template> forced me to move from it. |
64 |
|
65 |
For you, the user, that will result in changes to all templates. I'm sorry |
66 |
about this, but it had to be done. |
67 |
|
68 |
=head2 Order of substitution |
69 |
|
70 |
This was never really documented, so here it is now: |
71 |
|
72 |
=over 5 |
73 |
|
74 |
=item fields |
75 |
|
76 |
substitution of fields like C<v200^a> into values |
77 |
|
78 |
=item lookups |
79 |
|
80 |
next, lookups are performed (C<lookup{...}>) |
81 |
|
82 |
=item format |
83 |
|
84 |
then formats (defined by C<format_name=> and C<format_delimiter=>) are |
85 |
applied. If formats have lookups, they will be performed again. |
86 |
|
87 |
=cut |