scripts/article.min
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 |
;Generates a new article page.
"" :ident
"" :title
"" :subtitle
timestamp :ts
false :valid-id
(
(string) expect first :ident
ident "^[a-z0-9-]+$" match :valid-regexp
(. "contents" "articles") => "/" join ls =filelist
filelist (filename "(.+)\..+$" search 1 get) map ident in? not :valid-file
valid-regexp valid-file and
) :validate
(valid-id not) (
"ID" ask @ident
ident validate @valid-id
(valid-id not) ("ID must not be already used and it must contain only lowercase letters, numbers, or -" warn) when
) while
"Title" ask @title
"Subtitle" ask @subtitle
"-----
id: $1
title: \"$2\"
subtitle: \"$3\"
content-type: article
timestamp: $4
-----
<hr />
" (ident title subtitle ts) => % :metadata
metadata puts
("Create article?" confirm)
(
(ident ".md") => "" join :fn
(. "contents" "articles" fn) => "/" join :path
metadata path fwrite
) when
|