Overview
| Comment: | Provide index entry crystallization | 
|---|---|
| Timelines: | family | ancestors | descendants | both | trunk | 
| Files: | files | file ages | folders | 
| SHA3-256: | 94c49607f6904a2d2e6235297b28bb1a | 
| User & Date: | joel on 2019-07-10 01:37:26 | 
| Other Links: | manifest | tags | 
Context
| 2019-07-12 | ||
| 04:31 | Fix SQL query for articles+notes so series filtering will work check-in: b49b65af user: joel tags: trunk | |
| 2019-07-10 | ||
| 01:37 | Provide index entry crystallization check-in: 94c49607 user: joel tags: trunk | |
| 01:29 | Make parallel processing in Pollen setup explicit check-in: 7d4de0ec user: joel tags: trunk | |
Changes
Modified code-docs/crystalize.scrbl from [85f11db1] to [ff8f9919].
| ︙ | ︙ | |||
| 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | 
individually to the SQLite cache. If any of the notes use the @code{#:disposition} attribute,
information about the disposition is parsed out and used in the rendering of the article.
@defproc[(crystalize-series!) void?]
Saves metas for the current series page in the SQLite cache. Meant to be called from the HTML
template for “Series” pages (Pollen documents located in @racket[series-folder]).
@deftogether[(@defproc[(list/articles [type (or/c 'listing_full_html 
                                                  'listing_short_html
                                                  'listing_excerpt_html)]
                                      [#:series series (or/c string? boolean?) #t]
                                      [#:limit limit stringish? -1]
                                      [order string? "DESC"]) (listof string?)]
 | > > > > > > > | 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | 
individually to the SQLite cache. If any of the notes use the @code{#:disposition} attribute,
information about the disposition is parsed out and used in the rendering of the article.
@defproc[(crystalize-series!) void?]
Saves metas for the current series page in the SQLite cache. Meant to be called from the HTML
template for “Series” pages (Pollen documents located in @racket[series-folder]).
@defproc[(crystalize-index-entries! [pagenode pagenode?] [doc txexpr?]) void?]
Saves any @racket[index] enries entries in @racket[_doc] to the SQLite cache. 
@margin-note{This function was originally private; I provided it out only so it could be called
manually from @tt{index.html.pp}.}
@deftogether[(@defproc[(list/articles [type (or/c 'listing_full_html 
                                                  'listing_short_html
                                                  'listing_excerpt_html)]
                                      [#:series series (or/c string? boolean?) #t]
                                      [#:limit limit stringish? -1]
                                      [order string? "DESC"]) (listof string?)]
 | 
| ︙ | ︙ | 
Modified crystalize.rkt from [feaffe0a] to [db2e6817].
| ︙ | ︙ | |||
| 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 
         "dust.rkt")
;; ~~~ Provides ~~~
(provide spell-of-summoning!
         crystalize-article!
         crystalize-series!
         article-plain-title
         list/articles
         list/articles+notes
         listing<>-short/articles
         listing<>-full/articles
         listing<>-full/articles+notes
         unfence
 | > | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 
         "dust.rkt")
;; ~~~ Provides ~~~
(provide spell-of-summoning!
         crystalize-article!
         crystalize-series!
         crystalize-index-entries!
         article-plain-title
         list/articles
         list/articles+notes
         listing<>-short/articles
         listing<>-full/articles
         listing<>-full/articles+notes
         unfence
 | 
| ︙ | ︙ | |||
| 363 364 365 366 367 368 369 | 
;;   "entry!sub" → '("entry" "sub")
;;   "entry!sub!why?!? '("entry" "sub")
(define (split-entry str)
  (define splits (string-split str "!"))
  (list (car splits)
        (cadr (append splits (list "")))))
 | | | 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 | 
;;   "entry!sub" → '("entry" "sub")
;;   "entry!sub!why?!? '("entry" "sub")
(define (split-entry str)
  (define splits (string-split str "!"))
  (list (car splits)
        (cadr (append splits (list "")))))
;; Save any index entries in doc to the SQLite cache.
;; Sub-entries are specified by "!" in the index key
(define (crystalize-index-entries! pagenode doc)
  (define (index-entry? tx)
    (and (txexpr? tx)
         (string=? "index-link" (attr-ref tx 'class "")) ; see definition of html-index
         (attr-ref tx 'data-index-entry #f)))
  (define-values (_ entries) (splitf-txexpr doc index-entry?))
 | 
| ︙ | ︙ |