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: {
<% RECIPE-NAME %> |
}
HTML-TBL-INGREDIENTS: {
<% WS-INGREDIENT-LIST %>
|
}
HTML-TBL-FOOT: {
<% 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