| 1 |
352 |
dpavlin |
=head1 NAME |
| 2 |
|
|
|
| 3 |
|
|
Quick overview of things that are new in v2.x of WebPAC |
| 4 |
|
|
|
| 5 |
454 |
dpavlin |
=head1 Changes from version 1 |
| 6 |
352 |
dpavlin |
|
| 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 |
369 |
dpavlin |
are newer and more powerful (for example, each key can have more than |
| 32 |
352 |
dpavlin |
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 |
373 |
dpavlin |
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 |
369 |
dpavlin |
Memory lookups (referred as lookups for new versions of WebPAC) are now |
| 40 |
373 |
dpavlin |
always available. Since whole database is available when creating |
| 41 |
352 |
dpavlin |
output linking should be much easier now. |
| 42 |
|
|
|
| 43 |
369 |
dpavlin |
However, using new lookups require to define lookups in different way. |
| 44 |
373 |
dpavlin |
Additional benefit of that is conditional insert into lookup using eval |
| 45 |
|
|
(TODO: explain new lookup format). |
| 46 |
369 |
dpavlin |
|
| 47 |
373 |
dpavlin |
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 |
369 |
dpavlin |
=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 |
375 |
dpavlin |
|
| 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 |
454 |
dpavlin |
=head1 New features of version 2 |
| 88 |
|
|
|
| 89 |
|
|
Here are new features which didn't exist in version 1. |
| 90 |
|
|
|
| 91 |
|
|
=head2 Documentation |
| 92 |
|
|
|
| 93 |
|
|
Code is well documented using C<pod>. |
| 94 |
|
|
|
| 95 |
|
|
=head2 Baking as opposed to cooking your WebPAC |
| 96 |
|
|
|
| 97 |
|
|
It's possible to create searchable WebPAC completely static, from HTML and |
| 98 |
|
|
JavaScript, so you can burn it on CD-ROM. |
| 99 |
|
|
|
| 100 |
|
|
This was original reason for writing version 2 in the first place. |
| 101 |
|
|
|
| 102 |
|
|
=head2 Tree structures for data display |
| 103 |
|
|
|
| 104 |
|
|
See L<WebPAC::Tree>. |
| 105 |
|
|
|
| 106 |
375 |
dpavlin |
=cut |