REBOL [ Title: "Recipe to html" Purpose: {Render one recipe into an html page so it can be viewed or printed.} ] if not FILE-ID: request-file/only [ alert "No file requested." quit ] set [PATHNAME FILENAME] split-path FILE-ID replace FILENAME suffix? FILENAME ".html" OUTPUT-FILE-ID: rejoin [ PATHNAME FILENAME ] HTML-PAGE: "" HTML-HEAD: { <% RECIPE-NAME %> } HTML-TBL-HEAD: { } HTML-TBL-INGREDIENTS: { } HTML-TBL-FOOT: {

<% RECIPE-NAME %>

<% WS-INGREDIENT-LIST %>
<% RECIPE-PROCEDURE %>
<% RECIPE-NOTES %>
} HTML-FOOT: { } if not attempt [do load FILE-ID] [ alert "Recipe file format is not correct" quit ] if not value? 'RECIPE-NAME [ alert "RECIPE-NAME is not defined in the file" quit ] if not value? 'RECIPE-SOURCE [ alert "RECIPE-SOURCE is not defined in the file" quit ] if not value? 'RECIPE-INGREDIENTS [ alert "RECIPE-INGREDIENTS is not defined in the file" quit ] if not value? 'RECIPE-PROCEDURE [ alert "RECIPE-PROCEDURE is not defined in the file" quit ] if not value? 'RECIPE-NOTES [ alert "RECIPE-NOTES is not defined in the file" quit ] WS-INGREDIENT-LIST: copy "" foreach INGREDIENT-BLOCK RECIPE-INGREDIENTS [ foreach [INGREDIENT QUANTITY] INGREDIENT-BLOCK [ append WS-INGREDIENT-LIST rejoin [ INGREDIENT ", " QUANTITY newline ] ] ] append HTML-PAGE build-markup HTML-HEAD append HTML-PAGE build-markup HTML-TBL-HEAD append HTML-PAGE build-markup HTML-TBL-INGREDIENTS append HTML-PAGE build-markup HTML-TBL-FOOT append HTML-PAGE build-markup HTML-FOOT write OUTPUT-FILE-ID HTML-PAGE browse OUTPUT-FILE-ID