Overview
Comment: | Revise markup used for short listings (see [8ad560204f7a5c94]); bring back preheat-series |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
eff5c85d0ef69a4d7fe82ba6a0530c4d |
User & Date: | joel on 2020-02-20 02:31:06 |
Other Links: | manifest | tags |
Context
2020-02-20
| ||
02:58 | CSS for new short-list markup check-in: 6b04a07f user: joel tags: trunk | |
02:31 | Revise markup used for short listings (see [8ad560204f7a5c94]); bring back preheat-series check-in: eff5c85d user: joel tags: trunk | |
2020-02-19
| ||
07:41 | Shorten up wiki home check-in: 942fb65e user: joel tags: trunk | |
Changes
Modified cache.rkt from [42c939a6] to [3c46d95b].
︙ | ︙ | |||
26 27 28 29 30 31 32 33 34 35 36 37 38 39 | articles articles+notes listing-htmls <listing-full> <listing-excerpt> <listing-short> unfence series-grouped-list) ;; Cache DB and Schemas (define DBFILE (build-path (current-project-root) "vitreous.sqlite")) (define cache-conn (sqlite3-connect #:database DBFILE #:mode 'create)) | > | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | articles articles+notes listing-htmls <listing-full> <listing-excerpt> <listing-short> unfence preheat-series! series-grouped-list) ;; Cache DB and Schemas (define DBFILE (build-path (current-project-root) "vitreous.sqlite")) (define cache-conn (sqlite3-connect #:database DBFILE #:mode 'create)) |
︙ | ︙ | |||
124 125 126 127 128 129 130 | (define (s->p x) (format "~a/~a.html" series-folder x)) (match s [(list series ...) (where q (in a.series-page ,(map s->p series)))] ; WHERE series-page IN (item1 ...) [(or (? string? series) (? symbol? series)) (where q (= a.series-page ,(s->p series)))] ; WHERE series-page = "item" [#t | | | 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | (define (s->p x) (format "~a/~a.html" series-folder x)) (match s [(list series ...) (where q (in a.series-page ,(map s->p series)))] ; WHERE series-page IN (item1 ...) [(or (? string? series) (? symbol? series)) (where q (= a.series-page ,(s->p series)))] ; WHERE series-page = "item" [#t (where q (like a.series-page ,(format "%~a" (here-output-path))))] [_ q])) ;; (Private use) Convenience for the WHERE `conceal` NOT LIKE clause (define (where-not-concealed q) (define base-clause (where q (not (like a.conceal "%all%")))) (match (listing-context) ["" base-clause] |
︙ | ︙ | |||
192 193 194 195 196 197 198 | ;; ^^^^^ (define (<listing-excerpt> query-func #:series [s #t] #:limit [lim -1] #:order [ord 'desc]) `(style ,@(listing-htmls (query-func 'excerpt #:series s #:limit lim #:order ord)))) ;; ^^^^^^^^ (define (<listing-short> query-func #:series [s #t] #:limit [lim -1] #:order [ord 'desc]) | < | | > > > > > > > > > > > > > > > > > > | 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 | ;; ^^^^^ (define (<listing-excerpt> query-func #:series [s #t] #:limit [lim -1] #:order [ord 'desc]) `(style ,@(listing-htmls (query-func 'excerpt #:series s #:limit lim #:order ord)))) ;; ^^^^^^^^ (define (<listing-short> query-func #:series [s #t] #:limit [lim -1] #:order [ord 'desc]) `(style ,@(listing-htmls (query-func 'short #:series s #:limit lim #:order ord)))) ;; ^^^^^^ ;; Remove "<style>" and "</style>" introduced by using ->html on docs containing output from ;; listing functions (define (unfence html-str) (regexp-replace* #px"<[\\/]{0,1}style>" html-str "")) ;; ;; ~~~ Fetching series ~~~ ;; (define (series-grouped-list) (~> (for/list ([row (in-entities cache-conn (from cache:series #:as s))]) row) (group-list-by cache:series-noun-plural _ string-ci=?))) ;; Preloads the SQLite cache with info about each series. ;; I may not actually need this but I’m leaving it for now. (define (preheat-series!) (query-exec cache-conn (~> (from cache:series #:as s) (where 1) delete)) (define series-rows (for/list ([series-pagenode (in-list (cdr (series-pagetree)))]) (define series-metas (get-metas series-pagenode)) (make-cache:series #:page series-pagenode #:title (hash-ref series-metas 'title) #:published (hash-ref series-metas 'published "") #:noun-plural (hash-ref series-metas 'noun-plural "") #:noun-singular (hash-ref series-metas 'noun-singular "")))) (void (apply insert! cache-conn series-rows))) |
Modified snippets-html.rkt from [f524862a] to [e27d9d6e].
︙ | ︙ | |||
68 69 70 71 72 73 74 | ◊string-append{</section> <footer class="article-info"><span class="x">(</span>◊|footertext|<span class="x">)</span></footer> </article>}] [else "</section></article>"])) (define (html$-article-listing-short pagenode pubdate title) ◊string-append{ | | | | | | 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | ◊string-append{</section> <footer class="article-info"><span class="x">(</span>◊|footertext|<span class="x">)</span></footer> </article>}] [else "</section></article>"])) (define (html$-article-listing-short pagenode pubdate title) ◊string-append{ <article class="short-listing"><a href="/◊(symbol->string pagenode)"> <time datetime="◊pubdate" class="caps">◊(ymd->english pubdate)</time> <h3>◊|title|</h3> </a></article>}) (define (html$-page-footer) ◊string-append{ <footer id="main"> <p class="title">The Local Yarn</p> <nav><a href="/">Home</a> • <a href="/blog-pg1.html">Blog</a> • |
︙ | ︙ | |||
213 214 215 216 217 218 219 | (if (eq? pagecount pagenum) "<li class=\"nav-text inactive-link\">Older→</li>" (page-func (+ pagenum 1) "Older →" "nav-text"))) (string-join `(,prev-link ,@page-group ,next-link))) (define (series->txpr s) | | | 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 | (if (eq? pagecount pagenum) "<li class=\"nav-text inactive-link\">Older→</li>" (page-func (+ pagenum 1) "Older →" "nav-text"))) (string-join `(,prev-link ,@page-group ,next-link))) (define (series->txpr s) `(li (a [[href ,(string-append web-root (symbol->string (cache:series-page s)))]] (i ,(cache:series-title s))))) (define (html$-series-list) (define series-list-items (for/list ([group (in-list (series-grouped-list))]) `(div (h2 ,(cache:series-noun-plural (first group))) (ul ,@(map series->txpr group))))) (->html `(section [[class "column-list"] [style "margin-top: 1.3rem"]] ,@series-list-items))) |