logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Library::CallNumber::LC - Deal with Library-of-Congress call numbers

Abstract

       Library::CallNumber::LC is mostly designed to do call number normalization, with the following goals:

       •   The normalized call numbers are comparable with each other, for proper sorting

       •   The  normalized  call  number is a short as possible, so left-anchored wildcard searches are possible
           (e.g., searching on "A11*" should give you all the A11 call numbers)

       •   A range defined by start_of_range and end_of_range should be correct, assuming that the string  given
           for the end of the range is, in fact, a left prefix.

       That  last  point  needs  some explanation. The idea is that if someone gives a range of, say, A-AZ, what
       they really mean is A - AZ9999.99. The end_of_range method generates a key which lies immediately  beyond
       the  last possible key for a given starting point. There is no attempt to make end_of_range normalization
       correspond to anything in real life.

Author

       Current  Maintainer:  Dan  Wells,  "<dbw2  at  calvin.edu>"  Original  Author:  Bill Dueber, "<dueberb at
       umich.edu>"

Basic Accessors

call_number([call_number_text])
       The text of the call number we are dealing with.

   topper([character])
       Specify  which  character  occupies the 'always-sort-to-the-top' slots in the sort keys.  Defaults to the
       SPACE character, but can reasonably be anything with an ASCII  value  lower  than  48  (i.e.  the  'zero'
       character, '0').  This can function as either a class or instance method depending on need.

   bottomer([character])
       Specify which character occupies the 'always-sort-to-the-bottom' slots in the sort keys.  Defaults to the
       TILDE  character, but can reasonably be anything with an ASCII value higher than 90 (i.e. 'Z').  This can
       function as either a class or instance method depending on need.

Bugs

       Please    report    any    bugs    or    feature    requests    through    the    web    interface     at
       <http://code.google.com/p/library-callnumber-lc/issues/list>.   I  will  be  notified,  and  then  you'll
       automatically be notified of progress on your bug as I make changes.

Constructors

new([call_number_text,[topper_character,[bottomer_character]]])--createanewobject,optionallypassingintheinitialstring,a"topper",anda"bottomer"(explainedbelow)

Name

       Library::CallNumber::LC - Deal with Library-of-Congress call numbers

Other Methods

components(booleanreturnAll=false)
         @comps = Library::CallNumber::LC->new('A 123.4 .c11')->components($returnAll)

       Returns an array of the individual components of the call number (or undef if it doesn't look like a call
       number).  Components are:

       •   alpha

       •   number (numeric.decimal)

       •   cutter1

       •   cutter2

       •   cutter3

       •   "extra" (anything after the cutters)

       The optional argument <I returnAll> (false by default) determines whether or not empty components  (e.g.,
       extra cutters) get a slot in the returned list.

   _normalize(call_number_text)
       Base function to perform normalization.

   normalize([call_number_text])
       Normalize the stored or passed call number as a sortable string

   start_of_range([call_number_text])
       Alias for normalize

   end_of_range([call_number_text])
       Downshift an lc number so it represents the end of a range

   toLongInt(call_number_text,num_digits)
       Attempt  to  turn  a  call  number into an integer value. Possibly useful for fast range checks, although
       obviously not perfectly accurate. Optional argument $num_digits can be used  to  control  the  number  of
       digits used, and therefore the precision of the results.

Support

       You can find documentation for this module with the perldoc command.

           perldoc Library::CallNumber::LC

       You can also look for information at the Google Code page:

         http://code.google.com/p/library-callnumber-lc/

Synopsis

       Utility functions to deal with Library of Congress Call Numbers

           use Library::CallNumber::LC;
           my $a = Library::CallNumber::LC->new('A 123.4 .c11');
           print $a->normalize; # normalizes for string comparisons.
           # gives 'A01234 C11'
           print $a->start_of_range; # same as "normalize"
           my $b = Library::CallNumber::LC->new('B11 .c13 .d11');
           print $b->normalize;
           # gives 'B0011 C13 D11'
           my @range = ($a->start_of_range, $b->end_of_range);
           # end of range is 'B0011 C13 D11~'

           # Get components suitable for printing (e.g., number and decimal joined, leading dot on first cutter)
           @comps = Library::CallNumber::LC->new('A 123.4 .c11')->components()

           # Same thing, but return empty strings for missing components (e.g., the cutters)
           @comps = Library::CallNumber::LC->new('A 123.4 .c11')->components('true');

Version

       Version 0.23;

See Also