site/scripts/post.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 |
;Creates a new empty post. "" :ident "" :title time.stamp :ts ts "d MMMM yyyy" time.format :date false :valid-id ( (str) expect first :ident ident "^[a-z0-9-]+$" match? :valid-regexp (sys.pwd "contents" "posts") => "/" join sys.ls :filelist filelist (fs.filename "(.+)\\..+$" search 1 get) map ident in? not :valid-file valid-regexp valid-file and ) ^validate (valid-id not) ( "ID" io.ask @ident ident validate @valid-id (valid-id not) ("ID must not be already used and it must contain only lowercase letters, numbers, or -" io.warn!) when ) while "Title" io.ask @title "-----\nid: $1\ntitle: \"$2\"\ncontent-type: post\ndate: \"$3\"\ntimestamp: $4\n-----\n\n" (ident title date ts) => % :metadata metadata puts! ("Create post?" io.confirm) ( (ident ".md") => "" join :fn (sys.pwd "contents" "posts") => "/" join :dirpath (dirpath fs.exists? not) (dirpath sys.mkdir) when (dirpath fn) => "/" join :path metadata path fs.write ) when |