Skip to content

Commit 86b1470

Browse files
committed
Document new procedures
1 parent 343a83c commit 86b1470

File tree

2 files changed

+36
-12
lines changed

2 files changed

+36
-12
lines changed

Diff for: site/build.py

+13-12
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,10 @@ def get_link_name(item: Path) -> str:
9494
}
9595
"""
9696

97+
def san(s: str) -> str:
98+
return s.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")
99+
100+
97101
with open(ref / "palet.html", "w") as file:
98102
file.write(
99103
'{{ comp.header "Palet Scripting Reference" }}\n'
@@ -111,9 +115,6 @@ def get_link_name(item: Path) -> str:
111115
def text_to_str(t: dict) -> str:
112116
s = ""
113117

114-
def san(s: str) -> str:
115-
return s.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")
116-
117118
for c in t["children"]:
118119
if c is True:
119120
s += '<span class="palet-val">#t</span>'
@@ -143,23 +144,23 @@ def build_sig(vec: list[str | tuple]) -> str:
143144
results.append(v)
144145
continue
145146
if len(v) == 3:
146-
results.append(f'<span class="palet-var">[{v[0]}]</span>')
147+
results.append(f'<span class="palet-var">[{san(v[0])}]</span>')
147148
else:
148-
results.append(f'<span class="palet-var">{v[0]}</span>')
149+
results.append(f'<span class="palet-var">{san(v[0])}</span>')
149150
return "&nbsp;".join(results)
150151

151152

152153
def build_var(v: str) -> str:
153154
result = ""
154155
for p in v.replace("(", " ( ").replace(")", " ) ").strip().split(" "):
155156
if p in env:
156-
result += f'<a href="#{p}">{p}</a> '
157+
result += f'<a href="#{p}">{san(p)}</a> '
157158
elif p == "(":
158159
result += "("
159160
elif p == ")":
160161
result = result[:-1] + ")"
161162
else:
162-
result += f"{p} "
163+
result += f"{san(p)} "
163164
return result.strip()
164165

165166
def build_var_sig(sigs: list[str | tuple]) -> str:
@@ -171,7 +172,7 @@ def build_var_sig(sigs: list[str | tuple]) -> str:
171172
raise ValueError(f"bad signature: {sigs}")
172173

173174
name, sig, *_ = s
174-
result += f'<p class="mono">&nbsp;<span class="palet-var">{name}</span>'
175+
result += f'<p class="mono">&nbsp;<span class="palet-var">{san(name)}</span>'
175176
result += f'&nbsp;:&nbsp;{build_var(sig)}'
176177

177178
result += f"&nbsp;=&nbsp;{build_var(s[2])}</p>\n" if len(s) > 2 else "</p>\n"
@@ -197,22 +198,22 @@ def build_var_sig(sigs: list[str | tuple]) -> str:
197198
if some["tag"] == "value":
198199
file.write(
199200
'<div class="palet-block">\n'
200-
f'<p class="mono">{some["name"]}\n'
201+
f'<p class="mono">{san(some["name"])}\n'
201202
f'&nbsp;:&nbsp;<a href="#{some["sig"]}">{some["sig"]}</a>'
202203
'&nbsp;&nbsp;Value</p>\n</div>\n'
203204
f"<p>{text_to_str(some['summary'])}</p>\n"
204205
)
205206
if some["tag"] == "syntax":
206207
file.write(
207-
f'<div id="{some["name"]}" class="palet-block">\n'
208+
f'<div id="{san(some["name"])}" class="palet-block">\n'
208209
f'<p class="mono">(<b>{some["name"]}</b>&nbsp;{some["body"]})'
209210
'&nbsp;&nbsp;Syntax</p>\n</div>\n'
210211
f"<p>{text_to_str(some['summary'])}</p>\n"
211212
)
212213
if some["tag"] == "pred":
213214
file.write(
214215
f'<div id="{some["name"]}" class="palet-block">\n'
215-
f'<p class="mono">(<b>{some["name"]}</b>&nbsp;{build_sig(["v"])})'
216+
f'<p class="mono">(<b>{san(some["name"])}</b>&nbsp;{build_sig(["v"])})'
216217
'&nbsp;→&nbsp;<a href="#bool?">bool?</a>&nbsp;&nbsp;Procedure</p>\n'
217218
f'<p class="mono">&nbsp;<span class="palet-var">v</span>'
218219
'&nbsp;:&nbsp;<a href="#any?">any?</a></p></div>\n'
@@ -224,7 +225,7 @@ def build_var_sig(sigs: list[str | tuple]) -> str:
224225
assert isinstance(rname, str), rname
225226
file.write(
226227
f'<div id="{some["name"]}" class="palet-block">\n'
227-
f'<p class="mono">(<b>{some["name"]}</b>&nbsp;{build_sig(varsigs)})'
228+
f'<p class="mono">(<b>{san(some["name"])}</b>&nbsp;{build_sig(varsigs)})'
228229
+ ("" if rname == "none" else f'&nbsp;→&nbsp;{build_var(rname)}')
229230
+ '&nbsp;&nbsp;Procedure</p>\n'
230231
)

Diff for: site/paletdoc.pt

+23
Original file line numberDiff line numberDiff line change
@@ -907,6 +907,29 @@
907907
"satisfies the opposite of the given contract."
908908
)
909909
)
910+
(proc
911+
">=/c"
912+
(vec (vec "n" "real?") "contract?")
913+
(text
914+
"Returns a new contract that requires the input to be " (link 'real?)
915+
" and " (link '>=) " than " 'n "."
916+
)
917+
)
918+
(proc
919+
">/c"
920+
(vec (vec "n" "real?") "contract?")
921+
(text "Like " (link '>=/c) " but for " (link '>) ".")
922+
)
923+
(proc
924+
"<=/c"
925+
(vec (vec "n" "real?") "contract?")
926+
(text "Like " (link '>=/c) " but for " (link '<=) ".")
927+
)
928+
(proc
929+
"</c"
930+
(vec (vec "n" "real?") "contract?")
931+
(text "Like " (link '>=/c) " but for " (link '<) ".")
932+
)
910933
]
911934
"Objects" [vec
912935
(pred

0 commit comments

Comments
 (0)