-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathweewiki.janet
140 lines (121 loc) · 2.59 KB
/
weewiki.janet
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
(def ww-dir "_site/sndkit")
(def webroot (if (ww-server?) "/wiki" "/sndkit"))
(def write-tex (if (ww-server?) false true))
(def fig-dir "_fig")
(defn pgexists? (name)
(var db (ww-db))
(var x
(sqlite3/eval
db (string
"SELECT EXISTS(SELECT key from wiki "
"where key is \""name"\") as doiexist;")))
(= ((x 0) "doiexist") 1))
# (defn pglink (link)
# (cond
# (= link "index")
# (string webroot "/")
# (pgexists? link)
# (string webroot "/" link) "#"))
(defn pglink (page &opt target)
(var link "")
(if (nil? target)
(set link page)
(set link (string page "#" target)))
(cond
(= page "index")
(string webroot "/")
(pgexists? page)
(string webroot "/" link) "#"))
(defn refstr (link &opt name)
(if (nil? name)
(string "[[" (pglink link) "][" link "]]")
(string
"[["
(pglink link)
"]["
name
"]]")))
# (defn ref (link &opt name)
# (if (nil? name)
# (org (string "[[" (pglink link) "][" link "]]"))
# (org
# (string
# "[["
# (pglink link)
# "]["
# name
# "]]"))))
(defn ref (link &opt name target)
(default target nil)
(if (nil? name)
(org (string "[[" (pglink link) "][" link "]]"))
(org
(string
"[["
(pglink link target)
"]["
name
"]]"))))
(defn img [path &opt alt srcset]
(print
(string
"<img src=\""
path "\""
(if-not (nil? alt) (string " alt=\"" alt "\""))
(if-not (nil? srcset)
(string "srcset=\"" srcset "\""))
">")))
(defn img-link [path link &opt alt]
(print
(string
"<a href=\"" link "\">"
"<img src=\""
path "\""
(if-not (nil? alt) (string " alt=\"" alt "\""))
"></a>")))
(defn html-header
[]
(print
``<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<div id="main">
``)
)
(defn html-footer
[]
(print
``
</div>
</body>
</html>
``
))
(defn marker [id &opt msg]
(default msg "")
(prin (string "<a id=\"" id "\">" msg "</a>")))
(import "keywords")
(import "fig")
(defn pngfilepath [name]
(if (ww-server?)
(string "/" fig-dir "/" name ".png")
(string webroot "/" fig-dir "/" name ".png")))
(defn fig (name eqn)
(if write-tex (fig/fig name eqn fig-dir))
(img
(pngfilepath name)
eqn
(string
(pngfilepath name) " 1x,"
(pngfilepath (string name "2x")) " 2x,")
))
(defn smallfig (name &opt eqn)
(if write-tex (fig/smallfig name eqn fig-dir))
(img
(pngfilepath name)
eqn))