I've been working on a script to automagically generate html 4.0 tags. It's
kinda big, probably ugly. With it you can do things like:
h1/text: "Hello World"
h1/style: "background:white"
h1/out
The 'out function spits out a formatted tag like <h1
style="background:white">Hello World</h1>. Basically I took all the html4
tags and turned them into objects, with all the attributes as properties or
fields of the object. You can make your own tags and customize them, then
use them throughout a page. You can use a 'reset function, h1/reset, to set
the tags back to a default, like <h1>. I'd appreciate any comments. Please
be gentle, I'm a newbie......:-)I'm attaching a test script I used to test
everything, which should be modified to work on your system. Thanks for
suggestions, comments, etc.
Scott
______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
REBOL [
Title: "HTML 4 Generator"
Date: 24-Feb-00
Name: 'HTML4
Version: 1.0
File: %HTML4.r
Author: "Scott Woodrum"
Email: [EMAIL PROTECTED]
Category: [web]
Tabs: 4
Purpose: {Build properly formatted html4 tags for dynamic web page
creation(cgi) }
Comment: {
Every html tag has a corresponding object. Some object names have been
changed to
prevent name clashes with REBOL or for simplicity, i.e., <HEAD> = _head |
<OBJECT> = obj | <SELECT> = sel | _form=<FORM>. Every object has an 'out
function (prints
out the constructed tag) and a 'reset function (resets the tags attributes
to some default value). Some tag objects have an 'end function to print
out a closing tag. Make sure for cgi stuff you call the 'header function
at the start of your script. Not everything here is as clean or efficient
as I would like, i.e., the cut and pasty reset function.
Further note: most of this stuff really only works with IE4 or IE5. I did
some testing with
Mozilla alpha releases (http://www.mozilla.org) and everything seemed to
work OK.
Current versions of Netscape are iffy. Some things work, some things don't.
I included an ugly test page I used during development to exercize
tags/objects.
I didn't include any tags that are DEPRECATED by w3c.}
]
gentag: func [obj [object!]][
tag: []
clear tag
words: next first obj
foreach word words [
either function? get in obj word [][
if (not none? get in obj word) [
either equal? (mold word) "text" [] [
append tag to-lit-word word
append tag get in obj word
]
]
]
]
return tag
]
Begin: func ["The <HTML> tag."][
print [<HTML>]
]
End: func ["The </HTML> tag."][
print [</HTML>]
]
header: func ["Must have this at the beginning of your script, if using for
cgi stuff."][
print ["Content-Type: text/html^/"]
]
_head: make object! [
http-equiv: none
author: none
keywords: none
description: none
title: none
style: none
out: func [][
print [<HEAD>newline]
if (not none? http-equiv) [print build-tag [meta http-equiv
(http-equiv)]]
if (not none? author) [print build-tag [meta name "AUTHOR" content
(author)]]
if (not none? keywords) [print build-tag [meta name "KEYWORDS"
content
(keywords)]]
if (not none? description) [print build-tag [meta name "DESCRIPTION"
content (description)]]
if (not none? style) [
print build-tag [style type "text/css"]
print [style newline </STYLE>]]
if (not none? title) [print
[{<TITLE>}title{</TITLE>}newline{</HEAD>}]]
]
end: func [] [print [</HEAD>]]
] ; end of _head object
body: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [body (tag)]]
]
end: func [] [print [</BODY>]]
]
h1: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: "" ;the text between <H1></H1>
out: func [] [
tag: gentag self
print [build-tag [h1 (tag)]]
print text
print [</h1>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
]
]
h2: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
out: func [] [
tag: gentag self
print [build-tag [h2 (tag)]]
print text
print [</h2>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
]
]
h3: make object! [
;attributes
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
out: func [][
tag: gentag self
print [build-tag [h3 (tag)]]
print text
print [</h3>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
]
]
h4: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
out: func [] [
tag: gentag self
print [build-tag [h4 (tag)]]
print text
print [</h4>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
]
]
h5: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
out: func [] [
tag: gentag self
print [build-tag [h5 (tag)]]
print text
print [</h5>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
]
]
h6: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
out: func [] [
tag: gentag self
print [build-tag [h6 (tag)]]
print text
print [</h6>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
]
]
hr: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [hr (tag)]]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
a: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
name: none
shape: none
coords: none
target: none
tabindex: none
accesskey: none
href: none
text: ""
out: func [][
tag: gentag self
print [build-tag [a (tag)]]
print text
]
end: func [][
print [</a>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
name: none
shape: none
coords: none
target: none
tabindex: none
accesskey: none
href: none
text: ""
]
] ; end of 'a object
span: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [span (tag)]]
]
end: func [] [
print [</span>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
br: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [br (tag)]]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
comment: func ["An HTML comment. Takes a string as an argument." text
[string!]][
print [{<!--}text{-->}]
]
p: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [] [
tag: gentag self
print [build-tag [p (tag)]]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
img: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
src: none
longdesc: none
alt: none
name: none
ismap: none
usemap: none
out: func [][
tag: gentag self
print [build-tag [img (tag)]]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
src: none
longdesc: none
alt: none
name: none
ismap: none
usemap: none
]
] ; end of image object
pre: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: "" ;the text between <PRE></PRE>
out: func [] [
tag: gentag self
print [build-tag [pre (tag)]]
print text
print [</pre>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
]
]
blockquote: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
cite: none
text: "" ; the text between <BLOCKQUOTE></BLOCKQUOTE>
out: func [][
tag: gentag self
print [build-tag [blockquote (tag)]]
print text
print [</blockquote>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
cite: none
text: ""
]
]
caption: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: "" ; the text between <CAPTION></CAPTION>
out: func [][
tag: gentag self
print [build-tag [caption (tag)]]
print text
print [</caption>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
cite: none
text: ""
]
]
table: make object![
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
summary: none
width: none
frame: none
rules: none
border: none
cellspacing: none
cellpadding: none
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
cite: none
summary: none
width: none
frame: none
rules: none
border: none
cellspacing: none
cellpadding: none
]
out: func [][
tag: gentag self
print [build-tag [table (tag)]]
]
end: func [][
print [</table>]
]
]
thead: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
align: none
char: none
charoff: none
valign: none
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
align: none
char: none
charoff: none
valign: none
]
out: func [][
tag: gentag self
print [build-tag [thead (tag)]]
]
end: func [][
print [</thead>]
]
]; end of thead
tfoot: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
align: none
char: none
charoff: none
valign: none
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
align: none
char: none
charoff: none
valign: none
]
out: func [] [
tag: gentag self
print [build-tag [tfoot (tag)]]
]
end: func [][
print [</tfoot>]
]
]; end of tfoot
tbody: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
align: none
char: none
charoff: none
valign: none
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
align: none
char: none
charoff: none
valign: none
]
out: func [][
tag: gentag self
print [build-tag [tbody (tag)]]
]
end: func [][
print [</tbody>]
]
]; end of tbody
colgroup: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
span: none
width: none
align: none
char: none
charoff: none
valign: none
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
align: none
char: none
charoff: none
valign: none
span: none
width: none
]
out: func [] [
tag: gentag self
print [build-tag [colgroup (tag)]]
]
end: func [][
print [</colgroup>]
]
]; end of colgroup
col: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
span: none
width: none
align: none
char: none
charoff: none
valign: none
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
align: none
char: none
charoff: none
valign: none
span: none
width: none
]
out: func [][
tag: gentag self
print [build-tag [col (tag)]]
]
end: func [][
print [</col>]
]
]; end of col
tr: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
align: none
char: none
charoff: none
valign: none
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
align: none
char: none
charoff: none
valign: none
]
out: func [][
tag: gentag self
print [build-tag [tr (tag)]]
]
end: func [][
print [</tr>]
]
]; end of tr
th: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: "" ;text between the <TH></TH> tags
headers: none
scope: none
abbr: none
axis: none
rowspan: none
colspan: none
align: none
char: none
charoff: none
valign: none
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
align: none
char: none
charoff: none
valign: none
text: ""
headers: none
scope: none
abbr: none
axis: none
rowspan: none
colspan: none
]
out: func [][
tag: gentag self
print [build-tag [th (tag)]]
print text
print [</th>]
]
]; end of tr
td: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: "" ;text between the <TD></TD> tags
headers: none
scope: none
abbr: none
axis: none
rowspan: none
colspan: none
align: none
char: none
charoff: none
valign: none
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
align: none
char: none
charoff: none
valign: none
text: ""
headers: none
scope: none
abbr: none
axis: none
rowspan: none
colspan: none
]
out: func [][
tag: gentag self
print [build-tag [td (tag)]]
print text
]
end: func [][
print [</td>]
]
]; end of td
div: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
out: func [][
tag: gentag self
print [build-tag [div (tag)]]
]
end: func [][
print [</div>]
]
]
_form: make object! [;can't call it form - name collision!
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
action: none
method: "GET"
enctype: none
accept-charset: none
accept: none
name: none
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
action: none
method: "GET"
enctype: none
accept-charset: none
accept: none
name: none
]
out: func [][
tag: gentag self
print [build-tag [form (tag)]]
]
end: func [][
print [</form>]
]
words?: func [] [probe next first self]
];end of form object
_input: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
type: none
name: none
value: none
size: none
maxlength: none
checked: none
src: none
alt: none
accept: none
readonly: none
disabled: none
tabindex: none
accesskey: none
ismap: none
usemap: none
reset: func [][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
type: none
name: none
value: none
size: none
maxlength: none
checked: none
src: none
alt: none
accept: none
readonly: none
disabled: none
tabindex: none
accesskey: none
ismap: none
usemap: none
]; end of reset function
out: func [][
tag: gentag self
print [build-tag [input (tag)]]
]; end of out function
end: func [][
print [</input>]
]
];end of _input object
iframe: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
longdesc: none
name: none
width: none
height: none
src: none
frameborder: none
marginwidth: none
marginheight: none
scrolling: none
reset: func [][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
longdesc: none
name: none
width: none
height: none
src: none
frameborder: none
marginwidth: none
marginheight: none
scrolling: none
]
out: func [][
tag: gentag self
print [build-tag [iframe (tag)]]
]
end: func [][
print [</iframe>]
]
]
cite: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
out: func [] [
tag: gentag self
print [build-tag [cite (tag)]]
print text
print [</cite>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
]
];end of cite object
big: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [big (tag)]]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
end: func [][
print [</big>]
]
]
tt: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [tt (tag)]]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
end: func [][
print [</tt>]
]
]
b: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [b (tag)]]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
end: func [][
print [</b>]
]
]
small: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [small (tag)]]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
end: func [][
print [</small>]
]
]
code: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [code (tag)]]
]
end: func [][
print [</code>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
em: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [] [
tag: gentag self
print [build-tag [em (tag)]]
]
end: func [][
print [</em>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
strong: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [strong (tag)]]
]
end: func [][
print [</strong>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
dfn: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [dfn (tag)]]
]
end: func [][
print [</dfn>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
samp: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [samp (tag)]]
]
end: func [][
print [</samp>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
kbd: make object![
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [kbd (tag)]]
]
end: func [][
print [</kbd>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
var: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [var (tag)]]
]
end: func [][
print [</var>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
abbr: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [abbr (tag)]]
]
end: func [][
print [</abbr>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
acronym: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [acronym (tag)]]
]
end: func [][
print [</acronym>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
dl: make object![
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [dl (tag)]]
]
end: func [][
print [</dl>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
dt: make object![
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [dt (tag)]]
]
end: func [][
print [</dt>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
dd: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [dd (tag)]]
]
end: func [][
print [</dd>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
del: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
cite: none
datetime: none
text: ""
out: func [][
tag: gentag self
prin [build-tag [del (tag)] text [</del>]]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
cite: none
datetime: none
text: ""
]
]
ins: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
cite: none
datetime: none
text: ""
out: func [][
tag: gentag self
prin [build-tag [ins (tag)] text [</ins>]]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
cite: none
datetime: none
text: ""
]
] ;end of ins
fieldset: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [fieldset (tag)]]
]
end: func [][
print [</fieldset>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
legend: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
accesskey: none
out: func [][
tag: gentag self
print [build-tag [legend (tag)]text [</legend>]]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: none
accesskey: none
]
]
frame: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
name: none
longdesc: none
src: none
noresize: none
scrolling: none
frameborder: none
marginwidth: none
marginheight: none
out: func [][
tag: gentag self
print [build-tag [frame (tag)]]
]
reset: func [][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
name: none
longdesc: none
src: none
noresize: none
scrolling: none
frameborder: none
marginwidth: none
marginheight: none
]
]
frameset: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
rows: none
cols: none
out: func [][
tag: gentag self
print [build-tag [frameset (tag)]]
]
end: func [][
print [</frameset>]
]
reset: func [][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
rows: none
cols: none
]
]
link: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
href: none
hreflang: none
type: none
rel: none
rev: none
target: none
media: none
charset: none
out: func [][
tag: gentag self
print [build-tag [link (tag)]]
]
reset: func [][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
href: none
hreflang: none
type: none
rel: none
rev: none
target: none
media: none
charset: none
]
]
ol: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [ol (tag)]]
]
reset: func [][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
end: func [][
print [</ol>]
]
]
ul: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [ul (tag)]]
]
reset: func [][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
end: func [][
print [</ul>]
]
]
li: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [li (tag)]]
]
reset: func [][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
end: func [][
print [</li>]
]
]
label: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
accesskey: none
for: none
text: ""
out: func [][
tag: gentag self
print [build-tag [label (tag)]
text
</label>]
]
reset: func [][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
accesskey: none
for: none
text: ""
]
]
map: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
name: ""
out: func [][
tag: gentag self
print [build-tag [map (tag)]]
]
reset: func [][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
name: ""
]
]
area: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
shape: none
coords: none
nohref: none
usemap: none
name: none
alt: none
href: none
target: none
tabindex: none
accesskey: none
out: func [][
tag: gentag self
print [build-tag [area (tag)]]
]
reset: func [][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
shape: none
coords: none
nohref: none
usemap: none
name: none
alt: none
href: none
target: none
tabindex: none
accesskey: none
]
]
address: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [address (tag)]]
]
end: func [][
print [</address>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
noframes: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [noframes (tag)]]
]
end: func [][
print [</noframes>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
noscript: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
out: func [][
tag: gentag self
print [build-tag [noscript (tag)]]
]
end: func [][
print [</noscript>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
]
]
obj: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
classid: none
codebase: none
codetype: none
data: none
type: none
archive: none
declare: none
standby: none
tabindex: none
usemap: none
name: none
out: func [][
tag: gentag self
print [build-tag [object (tag)]]
]
reset: func [][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
classid: none
codebase: none
codetype: none
data: none
type: none
archive: none
declare: none
standby: none
tabindex: none
usemap: none
name: none
]
end: func [][
print [</object>]
]
]
option: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
selected: none
value: none
label: none
disabled: none
out: func [] [
tag: gentag self
print [build-tag [option (tag)]]
]
end: func [] [
print [</option>]
]
reset: func [] [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
selected: none
value: none
label: none
disabled: none
]
];option
optgroup: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
disabled: none
label: none
out: func [] [
tag: gentag self
print [build-tag [optgroup (tag)]]
]
end: func [] [
print [</optgroup>]
]
reset: func [] [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
disabled: none
label: none
]
]
sel: make object! [ ;this is the <select> tag! Avoiding name clash with
REBOL.
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
name: none
size: none
multiple: none
disabled: none
tabindex: none
out: func [] [
tag: gentag self
print [build-tag [select (tag)]]
]
end: func [] [
print [</select>]
]
reset: func [] [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
name: none
size: none
multiple: none
disabled: none
tabindex: none
]
]
param: make object! [
id: none
name: none
value: none
valuetype: none
type: none
out: func [] [
tag: gentag self
print [build-tag [param (tag)]]
]
end: func [] [
print [</param>]
]
reset: func [] [
id: none
name: none
value: none
valuetype: none
type: none
]
]
style: make object! [
lang: none
dir: none
title: none
media: none
type: none
out: func [] [
tag: gentag self
print [build-tag [style (reduce tag)]]
]
end: func [] [
print [</style>]
]
reset: func [] [
lang: none
dir: none
title: none
media: none
type: none
]
]
sup: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: "" ;the text between <sup></sup>
out: func [] [
tag: gentag self
print [build-tag [sup (tag)]]
print text
print [</sup>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
]
]
sub: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: "" ;the text between <sub></sub>
out: func [] [
tag: gentag self
print [build-tag [sub (tag)]]
print text
print [</sub>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
]
]
base: make object! [
href: none
target: none
out: func [] [
tag: gentag self
print [build-tag [base (tag)]]
clear tag
]
reset: func [] [
href: none
target: none
]
]
bdo: make object! [
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
out: func [] [
tag: gentag self
print [build-tag [bdo (tag)]]
print text
print [</bdo>]
]
reset: func ["Resets all the object values"][
id: none
class: none
lang: none
dir: none
title: none
style: none
events: none
text: ""
]
]
script: make object! [
src: none
type: none
defer: none
charset: none
out: func [][
tag: gentag self
print [build-tag [script (tag)]]
clear tag
]
end: func [] [
print [</script>]
]
reset: func [] [
src: none
type: none
defer: none
charset: none
]
]
REBOL [
Title: "HTML 4 Generator Test Page"
Date: 23-December-2000
Author: "Scott Woodrum"
Version: 1.0
]
include: func [files] [
either block? files [
forall files [do first files]
] [
do files
]
]
include %/d/proj/html4/html4.r ;;;;;;;;;;;;; change to wherever you put the
html4 script
header
begin
_head/style: {BODY { text-align:center;background:silver}}
_head/title: "Test Page"
_head/http-equiv: ["Content-Script-Type" content "text/javascript"]
_head/author: "Scott Woodrum"
_head/keywords: "test, test2, test3"
_head/description: "This is simply a test page."
_head/out
_head/end
body/out
h1/text: "This is between h1 tags."
h1/events: ['onMouseOver {message('Entered this H1 tag');return true}
'onMouseOut {message('');return true}]
h1/out
h2/text: "This is between h2 tags."
h2/style: {background: yellow; color: red}
h2/out
h3/text: "This is between h3 tags."
h3/out
h4/text: "This is between h4 tags."
h4/style: {backgound: silver;color: green;text-decoration:underline}
h4/out
h5/text: "This is between h5 tags."
h5/out
h6/text: "This is between h6 tags."
h6/out
hr/out
a/href: http://localhost/scripts/test.r ;;;;;;;;;; change to wherever you
put this script on your web server
a/style: {background:purple;color:white;font:10pt Times}
a/text: "This is a link to this test script."
a/out a/end a/reset
span/style: {font: 12pt Tahoma}
span/events: ['onMouseOver {message('In a span!');return true;} 'onMouseOut
{message('');return true;}]
span/title: "Do you see any JavaScript in the status bar?"
span/out
br/out
print "Testing the span tag"
span/end
comment "This is a test comment"
br/out
p/out
img/src: http://validator.w3.org/images/vh40.gif
img/title: "Testing the image tag."
img/alt: "Testing the image tag (alt)"
img/out
p/out
pre/text: {This text is preformatted:
Line one
Line two}
pre/style: {font:12pt courier}
pre/out
p/out
blockquote/cite: http://localhost
blockquote/text: {Ignorance is bliss -- Cypher, The Matrix}
blockquote/style: {background:green;color:white;font:10pt Tahoma}
blockquote/out
p/out
comment "Beginning of table code"
mytable: make table []
mytable/border: 1 mytable/cellspacing: 2
mytable/cellpadding: 2 mytable/out
caption/text: "Names"
caption/style: {background:purple;color:white}
caption/out
tr/out
th/text: "first" th/out
th/text: "last" th/out
tr/end
tr/out
td/text: "Scott" td/out
td/text: "Woodrum" td/out
tr/end
tr/out
td/text: "" td/colspan: 2 td/style: {text-align:center} td/out
a/text: "Scott's Homepage"
a/href: http://www.angelfire.com/sk/sawoodrum
a/out a/reset
td/end
tr/end
mytable/end
comment "end of table code"
f: make _form []
button: make _input []
f/action: http://localhost/scripts/test.r
button/type: "button"
button/name: "testButton"
button/value: "Push Me"
f/out
fieldset/out
legend/text: "A Button"
legend/style: {background:yellow}
legend/out
button/out
button/end
fieldset/end
f/end
iframe/src: http://www.rebol.com
iframe/width: 400 iframe/height: 400
iframe/frameborder: 0
iframe/out
iframe/end
iframe/reset
br/out
prin "Ignorance is Bliss."
cite/text: "Cypher, The Matrix" cite/out
br/out
big/out
print "This text should be big."
big/end
br/out
tt/out
print "TT style text."
tt/end
br/out
b/out
print "This text should be bold."
b/end
br/out
small/out
print "This text should be small."
small/end
br/out
em/out
print "This text is emphasized."
em/end
br/out
strong/out
print "This text is strong."
strong/end
br/out
dfn/out
print "Use of the DFN tag."
dfn/end
br/out
samp/out
print "Use of the SAMP tag."
samp/end
br/out
kbd/out
print "Use of the KDB tag."
kbd/end
br/out
var/out
print "Use of the VAR tag."
var/end
br/out
abbr/title: "Using the ABBR tag."
abbr/out
print "Using the ABBR tag."
abbr/end
br/out
acronym/out
print "Using the ACRONYM tag."
acronym/end
br/out
dl/style: {text-align:left}
dl/out
dt/out
print "Dweeb"
dd/out
print "A young excitable person who may mature into a nerd."
dt/out
print "Hacker"
dd/out
print "A clever REBOL programmer."
dl/end
br/out
comment "Demonstrating INS and DEL tags"
prin "Inserting and"
del/text: "inserting"
del/out
ins/text: "deleting"
ins/out
print "text"
comment "End of INS and DEL demonstration"
br/out
ul/style: {text-align:left}
ul/out
print "An unordered list."
li/out
print "Hello"
li/out
print "There"
p/out
ol/style: {text-align:left}
ol/out
print "An ordered list."
li/out
print "One"
li/out
print "two"
li/out
print "three"
br/out
print [{
<SCRIPT Language="JavaScript">
function message(text)
{
window.status = text;
}
</SCRIPT>}]
body/end
end