;;; Recipe html post creator with jsonld ;; Json string (defparameter *json* (make-array 0 :adjustable t :fill-pointer t :element-type 'character )) ;; Definition of json function (we should be using a library) (defun json ( n v &optional ( tab 3 )) (format *json* ",~%~vt\"~a\":\"~a\"" tab n v) ) ;; Creation of body, head and meta fill-pointer strings (defparameter *body* (make-array 0 :adjustable t :fill-pointer t :element-type 'character )) (defparameter *html* (make-array 0 :adjustable t :fill-pointer t :element-type 'character )) (defparameter *meta* (make-array 0 :adjustable t :fill-pointer t :element-type 'character )) ;; Initialize html and json (format *html* "~%") (format *html* "~%") (format *html* "~3t~%") (format *json* "{~%") (format *json* "~3t\"@context\": \"https://schema.org/\"") (json "@type" "Recipe") ;; Start asking info (format t "~%~%~%I'll ask for several info, and wait an answer for every question~%") (format t "To skip the question, press enter. Note the question won't be made again~%~%") (format *query-io* "Name of the recipe~3t") (force-output *query-io*) (let ((name (read-line))) (format *meta* "~6t~a~%" name) (format *body* "~6t

~a

~%" name) (json "name" name) ) ;; Render info (format *json* "~%}~%") (format *html* "~a" *meta*) (format *html* "~%~3t~%") (format *html* "~3t~%") (format *html* "~a" *body*) (format *html* "