tasks/help.min
1 |
"tasks/data/doc-snippets.json" fread from-json :snippets
"site/contents" ls ("reference-" match?) filter :src-files
"(?sm)\{#op\|\|([^|]+)\|\|([^|]+)\|\|([^|]+)\|\|(.+?)#\}" :op-regex
"(?sm)\{#sig\|\|([^|]+)\|\|([^#]+)#\}" :sig-regex
"(?sm)\{#alias\|\|([^|]+)\|\|([^#]+)#\}" :alias-regex
"(?sm)\{\{([^}]+)\}\}" :snippet-regex
"(?sm)\>( \>)*" :block-regex
"(?sm)%([^%]+)%" :title-regex
"(?sm)\{@[^@]+@\}" :incl-regex
"(?sm)`([^`]+)`" :code-regex
(
symbol fix-name
(str :s ==> str :result)
(
s
"!" (pop "!") replace-apply
""" (pop "\"") replace-apply
"|" (pop "|") replace-apply
"\[" (pop "") replace-apply
"\]" (pop "") replace-apply
"\(class:kwd\)" (pop "") replace-apply
">" (pop ">") replace-apply
"<" (pop "<") replace-apply
"'" (pop "'") replace-apply
"*" (pop "*") replace-apply
@result
)
) ::
;; Fixes names with special characters
(
symbol process-block-markup
(str :s ==> str :result)
(
s
block-regex (pop "") replace-apply
title-regex (pop "") replace-apply
incl-regex (pop "") replace-apply
code-regex (1 get) replace-apply
@result
)
) ::
;; Simplify block-level markup
(
symbol process-snippets
(str :s ==> str :result)
(
s snippet-regex (
1 get :id
snippets id dget
) replace-apply @result
)
) ::
;; Resolves documentation snippets.
(
symbol process
(str :s ==> str :result)
(
s process-snippets process-block-markup strip @result
)
) ::
;; Processes documentation snippets and markup.
(
symbol process-op
(quot :matches ==> dict :data)
(
{}
matches 1 get process fix-name %name
matches 2 get process fix-name :input
matches 3 get process fix-name :output
"$# ==> $#" (input output) =% %signature
matches 4 get process %description
"symbol" %kind
@data
)
) ::
;; Processes operator reference documentation.
(
symbol process-alias
(quot :matches ==> dict :data)
(
{}
matches 1 get process fix-name %name
matches 2 get :ref
"See $#" (ref) =% %description
"symbol" %kind
@data
)
) ::
;; Processes alias reference documentation.
(
symbol process-sig
(quot :matches ==> dict :data)
(
{}
matches 1 get process fix-name %name
matches 2 get :ref
"See $#" (ref) =% %description
"sigil" %kind
@data
)
) ::
;; Processes sigil reference documentation.
(
symbol default
(==>)
(
{} :ref-dict
{} :op-dict
{} :sig-dict
src-files (
:file
file "reference-([a-z]+)\.md" search 1 get :mod-id
"Processing: $#" (mod-id) =% notice!
file fread :contents
contents op-regex search-all (
process-op :op
op /name :op-name
op-dict
op op-name dset
@op-dict
) foreach
contents alias-regex search-all (
process-alias :alias
alias /name :alias-name
op-dict
alias alias-name dset
@op-dict
) foreach
contents sig-regex search-all (
process-sig :sig
sig /name :sig-name
sig-dict
sig sig-name dset
@sig-dict
) foreach
ref-dict
op-dict %operators
sig-dict %sigils
@ref-dict
) foreach
"Writing help.json" notice!
ref-dict to-json "help.json" fwrite
)
) ::
;; Builds the reference help JSON sources.
|