(defop auto_complete req
(let prefix (downcase (arg req "prefix"))
(prn (to-html-list (cut (startselts prefix keylist) 0 10)))))
(defop getcontents req
(with (field (arg req "field") name (arg req "name"))
(if (is field "population") (prn ((database name) 1))
(is field "area") (prn ((database name) 2))
(is field "capital") (prn ((database name) 3)))))
; Returns a list of elements that start with prefix
(def startselts (prefix seq) (rem [no (begins (downcase _) prefix)] seq))
; Wraps elts in HTML list tags
(def to-html-list (elts) (tostring
(prall elts "
")))
; Read the data, converting from a list into a table
; (database "United States") is
; ("United States" "301,139,947" "9,826,630" "Washington, DC")
(= database (table))
(w/infile inf "data.arc"
(let datalist (sread inf nil)
(each elt datalist
(= (database (elt 0)) elt))))
(= keylist (mergesort < (keys database)))
; Patch srv.arc to allow .js files
(= (srv-header* 'text/javascript)
"HTTP/1.0 200 OK
Content-Type: text/javascript; charset=UTF-8
Connection: close")
(def static-filetype (sym)
(let fname (string sym)
(and (~find #\/ fname)
(case (last (check (tokens fname #\.) ~single))
"gif" 'gif
"jpg" 'jpg
"css" 'text/css
"txt" 'text/html
"html" 'text/html
"js" 'text/javascript
))))