◊(Local Yarn Code "Check-in [49e661b8]")

Overview
Comment:Don't recompute article ids every time
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 49e661b8c201642c070dc3bce73f275e574e256f5f3ec9306d7e58afd7b08a5f
User & Date: joel on 2020-02-26 01:15:05
Other Links: manifest | tags
Context
2020-02-29
15:51
Make relativize script play nice with tidy-introduced line breaks check-in: fcaf9eac user: joel tags: trunk
2020-02-26
01:15
Don't recompute article ids every time check-in: 49e661b8 user: joel tags: trunk
2020-02-24
07:35
Variadic make-tag-predicate check-in: 3ed11073 user: joel tags: trunk
Changes

Modified dust.rkt from [e986dd0a] to [bed6133b].

86
87
88
89
90
91
92


93
94
95

96


97




98
99
100
101
102
103
104
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101

102
103
104
105
106
107
108
109
110
111
112







+
+



+

+
+
-
+
+
+
+







    [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 article-ids (make-hash))

;; Generates a short ID for the current article
(define (here-id [suffix #f])
  (define maybe-hash (hash-ref article-ids (here-output-path) #f))
  (define here-hash
    (cond
      [(not maybe-hash)
    (substring (bytes->hex-string (sha1-bytes (path->bytes (here-output-path)))) 0 8))
       (let ([h (substring (bytes->hex-string (sha1-bytes (path->bytes (here-output-path)))) 0 8)])
         (hash-set! article-ids (here-output-path) h)
         h)]
      [else maybe-hash]))
  (cond [(list? suffix) (apply string-append here-hash suffix)]
        [(string? suffix) (string-append here-hash suffix)]
        [else here-hash]))

;; “Touches” the last-modified date on the current article’s series, if there is one

(define (invalidate-series)
233
234
235
236
237
238
239
240

241
242
243
244
245
246
247
248
241
242
243
244
245
246
247

248

249
250
251
252
253
254
255







-
+
-







                
;; Convert, e.g., "* thoroughly recanted" into (values "*" "thoroughly recanted")
(define (disposition-values str)
  (cond [(string=? "" str) (values "" "")]
        [else (let ([splut (string-split str)])
                (values (car splut) (string-join (cdr splut))))]))

;; The format of a note’s ID is “HTML-driven” (used as an anchor link) but is included
;; The format of a note’s ID is “HTML-driven” (used as an anchor link)
;; here since it also serves as a primary key in the DB.
(define (build-note-id txpr)
  (string-append (maybe-attr 'date (get-attrs txpr))
                 "_"
                 (uri-encode (maybe-attr 'author (get-attrs txpr) default-authorname))))

;; Extract the last disposition (if any), and the ID of the disposing note, out of a list of notes
(define (notes->last-disposition-values txprs)