Re: Customizing MARC::Errorchecks

2012-07-19 Thread Shelley Doljack
Hi Bryan,

Thanks for the information. I also downloaded Lintadditions. Right now, I'm 
trying to figure out what I want to do. I'm new to object-oriented programming 
in Perl, so it's a learning experience for me. What I think I need to do is 
create my own module for checks specific to ebook records, like checking that 
all records have an 856 field with 2nd indicator 0 or an electronic resource 
007, among other things. I need to think about it more and play around with the 
different modules more. 

Thanks,
Shelley


- Original Message -
 From: Bryan Baldus bryan.bal...@quality-books.com
 To: Shelley Doljack sdolj...@stanford.edu, perl4lib@perl.org
 Sent: Tuesday, July 17, 2012 6:15:45 PM
 Subject: RE: Customizing MARC::Errorchecks
 
 On Tuesday, July 17, 2012 4:34 PM, Shelley Doljack
 [sdolj...@stanford.edu] wrote:
 I'm playing around with using MARC::Errorchecks for reviewing ebook
 records we get from vendors. I want to make some modifications to
 the module, but I find that if I do so in a similar manner
 described in the tutorial for customizing MARC::Lint, by making a
 subclass of the module, it doesn't work. Is this not possible with
 Errorchecks?
 
 Indeed, MARC::Errorchecks was not written in the object-oriented
 style that MARC::Lint uses. Skimming through the code just now (I've
 not worked with it as regularly as I might like to be able to keep
 it fresh in my memory), I believe it is essentially a collection of
 subs with a wrapper sub to call each check--check_all_subs() calls
 each of the checking subroutines and returns the arrayref of any
 errors found. When I wrote it I was still early in learning Perl
 (and while I've gotten better since then, lack of recent practice
 working with it hasn't necessarily improved my knowledge of the
 language), so I'm sure it's not the most optimized code possible.
 check_all_subs() and the POD comments could serve as an index to
 each of the checks, with the SYNOPSIS showing examples of how to
 call the individual checks.
 
 That said, if you have ideas for additions or changes, or other
 questions, I welcome hearing about them, either to add to the base
 module or to help with creating a related module of your own. I do
 know that I need to get working on the changes required for RDA
 records, but haven't really even started looking into the challenges
 those will pose (though that will likely result in a new module or
 more devoted just to RDA, and will also likely require
 changes/subclasses to MARC::Lint and MARC::Lintadditions).
 
 Also of note, I have a newer version I've just uploaded to CPAN [1]
 with the following changes (in addition to those listed below, I
 plan on removing MARC::Lint::CodeData from the Errorchecks
 distribution and then requiring MARC::Lint, which includes CodeData
 (to hopefully resolve issues with installing both module packages at
 the same time due to this file):
 
 Version 1.16: Updated May 16-Nov. 14, 2011. Released 7-17-2012.
  -Removed MARC::Lint::CodeData and require MARC::Lint
  -Turned off check_fieldlength($record) in check_all_subs()
  -Turned off checking of floating hyphens in 520 fields in
  findfloatinghyphens($record)
  -Updated validate008 subs (and 006) related to 008/24-27 (Books and
  Continuing Resources) for MARC Update no. 10, Oct. 2009 and Update
  no. 11, 2010; no. 12, Oct. 2010; and no. 13, Sept. 2011.
  -Updated %ldrbytes with leader/18 'c' and redefinition of 'i' per
  MARC Update no. 12, Oct. 2010.
 
 Version 1.15: Updated June 24-August 16, 2009. Released , 2009.
 
  -Updated checks related to 300 to better account for electronic
  resources.
  -Revised wording in validate008($field008, $mattype, $biblvl)
  language code (008/35-37) for '   '/zxx.
  -Updated validate008 subs (and 006) related to 008/24-27 (Books and
  Continuing Resources) for MARC Update no. 9, Oct. 2008.
  -Updated validate008 sub (and 006) for Books byte 33, Literary form,
  invalidating code 'c' and referring it to 008/24-27 value 'c' .
  -Updated video007vs300vs538($record) to allow Blu-ray in 538 and 's'
  in 07/04.
 
 [1] While the CPAN indexer works on that:
 http://www.cpan.org/authors/id/E/EI/EIJABB/MARC-Errorchecks-1.16.tar.gz
 , I've also posted the file to my website:
 http://home.comcast.net/~eijabb/bryanmodules/MARC-Errorchecks-1.16.tar.gz,
 with text versions of each file visible in:
 http://home.comcast.net/~eijabb/bryanmodules/MARC-Errorchecks-1.16
 
 #
 
 Finally, I meant to mention it on this list earlier, but I've posted
 a new version of MARC::Lint, 1.45, to CPAN [2], with the current
 development version (as of now, same as CPAN's version), in
 SourceForge's Git repository [3]. Updates to that module include:
  - Updated Lint::DATA section with Update No. 10 (Oct. 2009) through
  Update No. 14 (Apr. 2012)
  - Updated _check_article with the exceptions: 'A  ', 'L is '
 
 #
 
 [2] http://search.cpan.org/~eijabb/MARC-Lint-1.45/
 [3]
 http

RE: Customizing MARC::Errorchecks

2012-07-17 Thread Bryan Baldus
On Tuesday, July 17, 2012 4:34 PM, Shelley Doljack [sdolj...@stanford.edu] 
wrote:
I'm playing around with using MARC::Errorchecks for reviewing ebook records we 
get from vendors. I want to make some modifications to the module, but I find 
that if I do so in a similar manner described in the tutorial for customizing 
MARC::Lint, by making a subclass of the module, it doesn't work. Is this not 
possible with Errorchecks?

Indeed, MARC::Errorchecks was not written in the object-oriented style that 
MARC::Lint uses. Skimming through the code just now (I've not worked with it as 
regularly as I might like to be able to keep it fresh in my memory), I believe 
it is essentially a collection of subs with a wrapper sub to call each 
check--check_all_subs() calls each of the checking subroutines and returns the 
arrayref of any errors found. When I wrote it I was still early in learning 
Perl (and while I've gotten better since then, lack of recent practice working 
with it hasn't necessarily improved my knowledge of the language), so I'm sure 
it's not the most optimized code possible. check_all_subs() and the POD 
comments could serve as an index to each of the checks, with the SYNOPSIS 
showing examples of how to call the individual checks.

That said, if you have ideas for additions or changes, or other questions, I 
welcome hearing about them, either to add to the base module or to help with 
creating a related module of your own. I do know that I need to get working on 
the changes required for RDA records, but haven't really even started looking 
into the challenges those will pose (though that will likely result in a new 
module or more devoted just to RDA, and will also likely require 
changes/subclasses to MARC::Lint and MARC::Lintadditions).

Also of note, I have a newer version I've just uploaded to CPAN [1] with the 
following changes (in addition to those listed below, I plan on removing 
MARC::Lint::CodeData from the Errorchecks distribution and then requiring 
MARC::Lint, which includes CodeData (to hopefully resolve issues with 
installing both module packages at the same time due to this file):

Version 1.16: Updated May 16-Nov. 14, 2011. Released 7-17-2012.
 -Removed MARC::Lint::CodeData and require MARC::Lint
 -Turned off check_fieldlength($record) in check_all_subs()
 -Turned off checking of floating hyphens in 520 fields in 
findfloatinghyphens($record)
 -Updated validate008 subs (and 006) related to 008/24-27 (Books and Continuing 
Resources) for MARC Update no. 10, Oct. 2009 and Update no. 11, 2010; no. 12, 
Oct. 2010; and no. 13, Sept. 2011.
 -Updated %ldrbytes with leader/18 'c' and redefinition of 'i' per MARC Update 
no. 12, Oct. 2010.

Version 1.15: Updated June 24-August 16, 2009. Released , 2009.

 -Updated checks related to 300 to better account for electronic resources.
 -Revised wording in validate008($field008, $mattype, $biblvl) language code 
(008/35-37) for '   '/zxx.
 -Updated validate008 subs (and 006) related to 008/24-27 (Books and Continuing 
Resources) for MARC Update no. 9, Oct. 2008.
 -Updated validate008 sub (and 006) for Books byte 33, Literary form, 
invalidating code 'c' and referring it to 008/24-27 value 'c' .
 -Updated video007vs300vs538($record) to allow Blu-ray in 538 and 's' in 07/04.

[1] While the CPAN indexer works on that: 
http://www.cpan.org/authors/id/E/EI/EIJABB/MARC-Errorchecks-1.16.tar.gz
, I've also posted the file to my website: 
http://home.comcast.net/~eijabb/bryanmodules/MARC-Errorchecks-1.16.tar.gz, 
with text versions of each file visible in:
http://home.comcast.net/~eijabb/bryanmodules/MARC-Errorchecks-1.16

#

Finally, I meant to mention it on this list earlier, but I've posted a new 
version of MARC::Lint, 1.45, to CPAN [2], with the current development version 
(as of now, same as CPAN's version), in SourceForge's Git repository [3]. 
Updates to that module include:
 - Updated Lint::DATA section with Update No. 10 (Oct. 2009) through Update No. 
14 (Apr. 2012)
 - Updated _check_article with the exceptions: 'A  ', 'L is '

#

[2] http://search.cpan.org/~eijabb/MARC-Lint-1.45/
[3] http://marcpm.git.sourceforge.net/git/gitweb.cgi?p=marcpm/marcpm;a=summary

I hope this helps,

Bryan Baldus
Cataloger
Quality Books Inc.
1-800-323-4241x402
bryan.bal...@quality-books.com
eij...@cpan.org
http://home.comcast.net/~eijabb/