all repos — hastysite @ master

A high-performance static site generator.

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