
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 pads the given call number out to three cutters if need be. there is no attempt to make end_of_range normalization correspond to anything in real life.