I've updated MARC::Lint in CVS on SourceForge [1]. Changes between the CPAN version (1.42) and the current 1.43 release are listed below. At the end of the changes list, I've included possible additional changes I'm considering implementing before the 1.43 release to CPAN. I welcome any comments, corrections, or suggestions.

[1] <http://marcpm.cvs.sourceforge.net/marcpm/marc-lint/>

Changes:

        - Updated Lint::DATA section with Update No. 7 (Oct. 2006)

- MARC::Lint is incompatibile with Business::ISBN versions 2.00-2.02_01. Business::ISBN versions below 2 and 2.02_02 or above should work.

- Updated check_record's treatment of 880 fields. Now if the tagno is 880, check_record attempts to look at subfield 6 for the linked tagno and uses that as the basis for the tagno to be checked.

- Updated _check_article to account for 880, using subfield 6 linked tagno instead. - Updated _check_article to account for articles followed parentheses, apostrophes and/or quotes. Also related bug fixes for counting punctuation around the article.

- For subfield 6, it should always be the 1st subfield according to MARC 21 specifications, so check_245 has been updated to account for subfield 6 being 1st, rather than requiring subfield a to be 1st.

        - Added new test, test880and6.t for 880 field and for subfield 6.

- Added TODO concerning subfield 9. This subfield is not officially allowed in MARC, since it is locally defined. Some way needs to be made to allow messages/warnings about this subfield to be turned off.

- Added TODO concerning subfield 8. This subfield could be the 1st or 2nd subfield, so the code that checks for the 1st few subfields (check_245, check_250) should take that into account.

        - Updated MARC::Lint::CodeData with most recent version.

#######################
#######################

=head2 Other Lint TODO

=head2 new subs

=head3 allow_subfield_9 ($allow, [EMAIL PROTECTED])

Given a boolean for including or excluding subfield 9 and an arrayref of tags for which subfield 9 should be allowed or disallowed, revises MARC::Lint's tag rules accordingly.

#############

sub allow_subfield_9 { #TODO
} #allow_subfield_9 ($allow, [EMAIL PROTECTED])


=head3 redefine_tag_rules ($overwrite_all, \%hash_of_new_rules)

Pass in a boolean indicating whether the existing rule should be completely overwritten (1; delete existing rules) or just updated (0; retain existing rules, adding new rules and revising definition of matching existing rules) and a hashref containing tag rules revised according to local practices to redefine MARC::Lint's default tag rules.

For example, to allow subfield 9 in field 035, while retaining the rest of the 035's rules:
my $overwrite_all = 0;
my %redefined_035 = {'035' => {'9' => 'NR'}};
$lint->redefine_tag_rules ($overwrite_all, \%hash_of_new_rules)

######### outline of $lint original 035 rules:
'_rules' => {

    '035' => {
    '8' => 'R',
    '6' => 'NR',
    'ind2_desc' => 'blank',
    'ind1_regex' => qr/(?-xism:^ $)/,
    'ind2_regex' => qr/(?-xism:^ $)/,
    'a' => 'NR',
    'ind1' => 'blank',
    'ind2' => 'blank',
    'z' => 'R',
    'repeatable' => 'R',
    'ind1_desc' => 'blank'
    }, #035
} #rules

######### outline of $lint after adding NR subfield 9:

'_rules' => {

    '035' => {
    '9' => 'NR',
    '8' => 'R',
    '6' => 'NR',
    'ind2_desc' => 'blank',
    'ind1_regex' => qr/(?-xism:^ $)/,
    'ind2_regex' => qr/(?-xism:^ $)/,
    'a' => 'NR',
    'ind1' => 'blank',
    'ind2' => 'blank',
    'z' => 'R',
    'repeatable' => 'R',
    'ind1_desc' => 'blank'
    }, #035
} #rules



#####

sub redefine_tag_rules { #TODO
} #redefine_tag_rules (\%hash_of_new_rules)

#############


=cut

Thank you for your assistance,

Bryan Baldus
[EMAIL PROTECTED]
[EMAIL PROTECTED]
http://home.inwave.com/eija

Reply via email to