Index: dust.rkt ================================================================== --- dust.rkt +++ dust.rkt @@ -21,10 +21,11 @@ ;; Provides common helper functions used throughout the project (provide maybe-meta ; Select from (current-metas) or default value ("") if not available maybe-attr ; Return an attribute’s value or a default ("") if not available + set-meta! here-output-path here-source-path here-id listing-context current-series-noun ; Retrieve noun-singular from current 'series meta, or #f @@ -62,10 +63,15 @@ (define (maybe-meta m [missing ""]) (cond [(current-metas) (or (select-from-metas m (current-metas)) missing)] [else missing])) +(define (set-meta! key v) + (define cur-metas (current-metas)) + (and cur-metas + (current-metas (hash-set! cur-metas key v)))) + ;; Return the current source path, relative to (current-project-root) (define (here-source-path) (match (current-metas) [(? hash? m) (define-values (_ rel-path-parts) Index: tags-html.rkt ================================================================== --- tags-html.rkt +++ tags-html.rkt @@ -110,13 +110,21 @@ #:block-txexpr-proc detect-newthoughts #:inline-txexpr-proc decode-link-urls #:exclude-tags '(script style pre code))) `(body ,@second-pass)) -(define (html-title . elements) `(title ,@elements)) -(define (html-excerpt . elements) `(excerpt ,@elements)) -(define (html-excerpt* . elements) `(excerpt* ,@elements)) +(define (html-title . elements) + (set-meta! 'title elements) + `(title ,@elements)) + +(define (html-excerpt . elements) + (set-meta! 'excerpt elements) + "") + +(define (html-excerpt* . elements) + (set-meta! 'excerpt elements) + `(@ ,@elements)) (define (html-blockcode attrs elems) (define file (or (assoc 'filename attrs) "")) (define codeblock `(pre [[class "code"]] (code ,@elems))) (cond [(string>? file "") `(@ (div [[class "listing-filename"]] 128196 " " ,file) ,codeblock)]