diff options
Diffstat (limited to 'skate/reduce.go')
-rw-r--r-- | skate/reduce.go | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/skate/reduce.go b/skate/reduce.go index ade6a02..d093f5a 100644 --- a/skate/reduce.go +++ b/skate/reduce.go @@ -303,23 +303,8 @@ func ZippyVerifyRefsOpenLibraryTable(olr, refs io.Reader, w io.Writer) error { // release) and writes biblioref. func ZippyVerifyRefsOpenLibrary(olr, refs io.Reader, w io.Writer) error { var ( - enc = json.NewEncoder(xio.NewSingleWriter(w)) - keyer = makeKeyFunc("\t", 1) - cleanIdentifier = func(s string) string { - // Turn ids like /books/OL31189321M into OL31189321M - if s = strings.TrimSpace(s); len(s) == 0 { - return "" - } - var ( - parts = strings.Split(s, "/") - last = parts[len(parts)-1] - ) - if strings.HasPrefix(last, "OL") { - return last - } - log.Printf("warning: unexpected OL id: %s", s) - return "" - } + enc = json.NewEncoder(xio.NewSingleWriter(w)) + keyer = makeKeyFunc("\t", 1) grouper = func(g *zipkey.Group) error { // TODO: For openlibrary and wayback matches, pass through either // unstructured ref string, or CSL JSON @@ -344,7 +329,7 @@ func ZippyVerifyRefsOpenLibrary(olr, refs io.Reader, w io.Writer) error { result := Verify(pivot, ref) switch result.Status { case StatusExact, StatusStrong: - openLibraryWorkID := cleanIdentifier(pivot.WorkID) + openLibraryWorkID := cleanOpenLibraryIdentifier(pivot.WorkID) if openLibraryWorkID == "" { continue } @@ -681,3 +666,21 @@ func parseBiblioref(s string) (r *BiblioRef, err error) { err = json.Unmarshal([]byte(s), &r) return } + +// cleanOpenLibraryIdentifier turns OL ids like /books/OL31189321M into OL31189321M. +func cleanOpenLibraryIdentifier(s string) string { + // XXX: This can be made faster; iterate from the end of the string + // and use a slice. + if s = strings.TrimSpace(s); len(s) == 0 { + return "" + } + var ( + parts = strings.Split(s, "/") + last = parts[len(parts)-1] + ) + if strings.HasPrefix(last, "OL") { + return last + } + log.Printf("warning: unexpected OL id: %s", s) + return "" +} |