LC1352542 - Printing LC Spine Labels format problem user/dpearl/LP1352542_spine_labels
authorDan Pearl <dpearl@cwmars.org>
Fri, 5 Feb 2016 20:34:31 +0000 (15:34 -0500)
committerDan Pearl <dpearl@cwmars.org>
Tue, 23 Feb 2016 14:53:26 +0000 (09:53 -0500)
A reference was mis-coded in the javascript, so the special case code written for LC
handling was never executed. In addition, the pattern matching code that was now revealed
produced incorrect results.

Signed-off-by: Dan Pearl <dpearl@cwmars.org>
Open-ILS/xul/staff_client/server/cat/spine_labels.js
docs/RELEASE_NOTES_NEXT/Cataloging/spine_label.adoc [new file with mode: 0644]

index 7822c90..f09408b 100644 (file)
                 callnum = String(volume.label());
             }
             /* handle spine labels differently if using LC */
-            if (volume.label_class() == 3) {
-                /* for LC, split between classification subclass letters and numbers */
-                var lc_class_re = /^([A-Z]{1,3})([0-9]+.*?)$/i;
-                var lc_class_match = lc_class_re.exec(callnum);
-                if (lc_class_match && lc_class_match.length > 1) {
-                    callnum = lc_class_match[1] + ' ' + lc_class_match[2];
+            var lab_class = volume.label_class();
+            if (lab_class.id() == 3) {
+               /* Establish a pattern where every return value should be isolated on its own line
+                   on the spine label: subclass letters, subclass numbers,
+                   cutter numbers, trailing stuff (date) */
+                var patt1 = /^([A-Z]{1,3})\s*(\d+(?:\.\d+)?)\s*(\.[A-Z]\d*)([A-Z]\d*)?(.*)$/i;
+                var result = callnum.match(patt1);
+                if (result) {
+                    callnum = result.slice(1).join(' ');
                 }
+                /* If result is null, leave callnum alone. Can't parse this malformed call num */
 
-                /* for LC, split between Cutter numbers */
-                var lc_cutter_re = /^(.*)(\.[A-Z]{1}[0-9]+.*?)$/ig;
-                var lc_cutter_match = lc_cutter_re.exec(callnum);
-                if (lc_cutter_match && lc_cutter_match.length > 1) {
-                    callnum = '';
-                    for (var i = 1; i < lc_cutter_match.length; i++) {
-                        callnum += lc_cutter_match[i] + ' ';
-                    }
-                }
             }
 
             /* Only add the prefixes and suffixes once */
diff --git a/docs/RELEASE_NOTES_NEXT/Cataloging/spine_label.adoc b/docs/RELEASE_NOTES_NEXT/Cataloging/spine_label.adoc
new file mode 100644 (file)
index 0000000..b515bab
--- /dev/null
@@ -0,0 +1,4 @@
+Spine Label Formatting
+^^^^^^^^^^^^^^^^^^^^^^
+The spine label formatting for LC-class call numbers did not format correctly.
+This has been fixed.