M: f topic>filename* drop \ f topic>filename* ;
: topic>filename ( topic -- filename )
- topic>filename* dup [
+ topic>filename* [
[
% "-" %
dup array?
[ escape-filename ]
if % ".html" %
] "" make
- ] [ 2drop f ] if ;
+ ] [ drop f ] if* ;
M: topic url-of topic>filename ;
] { } make ;
: serialize-index ( index file -- )
- [ [ [ topic>filename ] dip ] { } assoc-map-as object>bytes ] dip
- binary set-file-contents ;
+ binary [
+ [ [ topic>filename ] dip ] { } assoc-map-as serialize
+ ] with-file-writer ;
-: generate-indices ( -- )
- articles get keys [ [ >link ] [ article-title ] bi ] { } map>assoc "articles.idx" serialize-index
- all-words [ dup name>> ] { } map>assoc "words.idx" serialize-index
- all-vocabs-really [ dup vocab-name ] { } map>assoc "vocabs.idx" serialize-index ;
+: generate-article-index ( -- )
+ articles get [ [ >link ] [ article-title ] bi* ] assoc-map
+ "articles.idx" serialize-index ;
+
+: generate-word-index ( -- )
+ all-words [ dup name>> ] { } map>assoc
+ "words.idx" serialize-index ;
-: (generate-help-files) ( -- )
- all-topics [ '[ _ generate-help-file ] try ] each ;
+: generate-vocab-index ( -- )
+ all-vocabs-really [ dup vocab-name ] { } map>assoc
+ "vocabs.idx" serialize-index ;
+
+: generate-indices ( -- )
+ generate-article-index
+ generate-word-index
+ generate-vocab-index ;
: generate-help-files ( -- )
H{
{ recent-words f }
{ recent-articles f }
{ recent-vocabs f }
- } [ (generate-help-files) ] with-variables ;
+ } [
+ all-topics [ '[ _ generate-help-file ] try ] each
+ ] with-variables ;
: generate-help ( -- )
"docs" cache-file