@@ -2,14 +2,16 @@ ; SPDX-License-Identifier: BlueOak-1.0.0 ; This file is licensed under the Blue Oak Model License 1.0.0. (require pollen/core + "series-list.rkt" pollen/pagetree pollen/setup pollen/file net/uri-codec + threading file/sha1 gregor txexpr racket/list racket/match @@ -23,13 +25,13 @@ maybe-attr ; Return an attribute’s value or a default ("") if not available here-output-path here-source-path here-id listing-context - series-metas-noun ; Retrieve noun-singular from current 'series meta, or "" - series-metas-title ; Retrieve title of series in current 'series meta, or "" - metas-series-pagenode + current-series-noun ; Retrieve noun-singular from current 'series meta, or #f + current-series-title ; Retrieve title of series in current 'series meta, or #f + current-series-pagenode invalidate-series checked-in? make-tag-predicate tx-strs ymd->english @@ -79,28 +81,30 @@ (define listing-context (make-parameter "")) ;; Checks current-metas for a 'series meta and returns the pagenode of that series, ;; or '|| if no series is specified. -(define (metas-series-pagenode) - (define maybe-series (or (select-from-metas 'series (current-metas)) "")) - (cond - [(non-empty-string? maybe-series) - (->pagenode (format "~a/~a.html" series-folder maybe-series))] - [else '||])) - -(define (series-metas-noun) - (define series-pnode (metas-series-pagenode)) - (case series-pnode - ['|| ""] ; no series specified - [else (or (select-from-metas 'noun-singular series-pnode) "")])) - -(define (series-metas-title) - (define series-pnode (metas-series-pagenode)) - (case series-pnode - ['|| ""] ; no series specified - [else (or (select-from-metas 'title series-pnode) "")])) +(define (current-series-pagenode) + (or (and~> (current-metas) + (hash-ref 'series #f) + (format "~a/~a.html" series-folder _) + ->pagenode) + '||)) + +(define (current-series-noun) + (or (and~> (current-metas) + (hash-ref 'series #f) + (hash-ref series-list _ #f) + series-noun-singular) + "")) + +(define (current-series-title) + (or (and~> (current-metas) + (hash-ref 'series #f) + (hash-ref series-list _ #f) + series-title) + "")) (define article-ids (make-hash)) ;; Generates a short ID for the current article (define (here-id [suffix #f])