1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
+
|
#lang racket/base
; SPDX-License-Identifier: BlueOak-1.0.0
; This file is licensed under the Blue Oak Model License 1.0.0.
;; Renders a Yarn AST and metadata into HTML
(require "../tools.rkt"
"../string.rkt"
"../path.rkt"
koyo/haml
pollen/core
pollen/decode
racket/function
racket/list
racket/match
racket/string
|
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
-
+
|
`(a [[id ,(here-key (format "_~a-~a" type key))]
[href ,(string-append "/keyword-index.html#" key)] ; TODO: ref type links need to resolve to the target
[data-index-entry ,key]
[class ,(symbol->string type)]]
,@elems))
(define (render-footnote-ref ref)
(cons-to-metas-list 'fn-names ref)
(cons-to-metas-list 'fn-names ref)
(let* ([here (here-key)]
[fn-names (hash-ref (current-metas) 'fn-names)]
[def-anchor (format "#~a_fndef_~a" here ref)]
[nth-ref (number->string (count (curry equal? ref) fn-names))]
[ref-id (format "#~a_fn_~a_~a" here ref nth-ref)]
[fn-number (+ 1 (index-of (remove-duplicates (reverse fn-names)) ref))]
[ref-text (format "(~a)" fn-number)])
`(sup (a [[href ,def-anchor] [id ,ref-id]] ,ref-text))))
|