Overview
Comment: | More code docs |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
a4190d260ef35907ab8c8bddfa47c6b1 |
User & Date: | joel on 2019-03-03 21:34:11 |
Other Links: | manifest | tags |
Context
2019-03-03
| ||
21:35 | Tell Fossil to ignore Pollen docs for now check-in: 0d3ef4aa user: joel tags: trunk | |
21:34 | More code docs check-in: a4190d26 user: joel tags: trunk | |
2019-02-23
| ||
23:16 | Add scribble docs for snippets-html check-in: 8e0002ee user: joel tags: trunk | |
Changes
Added code-docs/crystalize.scrbl version [e3f76dfe].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | #lang scribble/manual @; Copyright (c) 2019 Joel Dueck @; @; Copying and distribution of this file, with or without modification, @; are permitted in any medium without royalty provided the copyright @; notice and this notice are preserved. This file is offered as-is, @; without any warranty. @(require "scribble-helpers.rkt") @(require (for-label "../pollen.rkt" "../dust.rkt" "../crystalize.rkt" racket/base racket/contract racket/string txexpr pollen/template pollen/pagetree sugar/coerce)) @title{@filepath{crystalize.rkt}} @defmodule["crystalize.rkt" #:packages ()] “Crystalizing” is an extra layer in between docs and templates that destructures the doc and stores it in various pieces in a SQLite cache. Individual articles save chunks of rendered HTML to the cache when their individual pages are rendered. The SQLite cache is then referenced by any page that collects multiple articles and notes together. This is much faster than fetching docs and metas through Pollen’s cache and re-converting them to HTML. This module only provides three functions; almost all its code is private. @defproc[(spell-of-summoning!) void?] Initializes the SQLite database cache file. This involves creating the file (@filepath{vitreous.sqlite}) if it does not exist, and running queries to create tables in the database if they do not exist. This function should be called near the beginning of any HTML template used to render an individual article. I could have made it so the function is called automatically every time Pollen is run. But that would mean it gets run even when the target is not HTML, which is unnecessary. @defproc[(crystalize-article! [pagenode pagenode?] [doc txexpr?]) non-empty-string?] Returns a string containing the HTML of doc. @margin-note{This is one function that breaks my convention of using a prefix of @tt{html$-} for functions that return strings of HTML.} Privately, however, it does a lot of other work. The article is saved to the SQLite cache. If the article specifies a @racket['series] meta, information about that series is fetched and used in the rendering of the article. If there are @racket[note]s in the doc, they are parsed and saved 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[(article-plain-title [pagenode pagenode?]) non-empty-string?] Fetches the “plain” title (i.e., with no HTML markup) for the given article from the SQLite cache. If the article did not specify a title, a default title is supplied. If the article contained a @racket[note] that used the @code{#:disposition} attribute, the disposition-mark may be included in the title. Note that this needs to be called @emph{after} @racket[crystalize-article!] in order to get an up-to-date value. |
Modified code-docs/dust.scrbl from [785c90f0] to [14a49bec].
︙ | ︙ | |||
23 24 25 26 27 28 29 | @(dust-eval '(require "dust.rkt")) @title{@filepath{dust.rkt}} @defmodule["dust.rkt" #:packages ()] This is where I put constants and helper functions that are needed pretty much everywhere in the | | | | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | @(dust-eval '(require "dust.rkt")) @title{@filepath{dust.rkt}} @defmodule["dust.rkt" #:packages ()] This is where I put constants and helper functions that are needed pretty much everywhere in the project. In a simpler project these would go in @seclink["pollen-rkt"]{@filepath{pollen.rkt}} but here I have other modules sitting “behind” that one in the @tt{require} chain. @section{Constants} @defthing[default-authorname string? #:value "Joel Dueck"] Used as the default author name for @code{note}s, and (possibly in the future) for articles generally. |
︙ | ︙ |
Modified code-docs/main.scrbl from [9028aeca] to [4e9953b9].
︙ | ︙ | |||
33 34 35 36 37 38 39 40 | @local-table-of-contents[] @include-section["pollen.scrbl"] @; pollen.rkt @include-section["dust.scrbl"] @; dust.rkt @include-section["sqlite-tools.scrbl"] @; sqlite-tools.rkt @include-section["snippets-html.scrbl"] @; you get the idea | > | 33 34 35 36 37 38 39 40 41 | @local-table-of-contents[] @include-section["pollen.scrbl"] @; pollen.rkt @include-section["dust.scrbl"] @; dust.rkt @include-section["sqlite-tools.scrbl"] @; sqlite-tools.rkt @include-section["snippets-html.scrbl"] @; you get the idea @include-section["crystalize.scrbl"] |