Documention for: directions.r
Created by: btiffin
on: 12-Aug-2007
Format: text/editable
Downloaded on: 30-Apr-2025
Using %directions.r
Source Code by REBOL Technologies
Usage document by Brian Tiffin
11-Aug-2007
===Introduction to %directions.r
This script demonstrates how REBOL blocks can hold data in a very people friendly
format.
===Using %directions.r
directions.r is more for reading than for doing. This code will load and
execute, but doesn't actually do anything beyond defining a variable that holds driver
friendly directions for getting to the REBOL Technologies office from San Francisco.
===What you can learn
The rest of this document is a kind of line by line analysis of the
script. Explaining things as it goes. One of the nice things about
REBOL is that programs can be pretty short for amount of functionality
that is involved.
---REBOL Header
This is rarely mentioned in the usage documents, but REBOL has a very sophisticated
script header management system, built right into the language. All scripts have at
least a minimal header, which would be;
REBOL []
It is much more professional, and somewhat mandatory for rebol.org scripts, to
include realistic entries in the REBOL header.
---Getting a copy of header fields
A nice trick to save a little typing, and to give yourself a template to work from,
try;
write clipboard:// form system/standard/script
and you can now paste into an empty text file, all the header fields that are built
into REBOL. For more information check out the Headerssection in Chapter 5 of the Core Manual.
At first, if you get used to adding at least a Title, Date, some credit to yourself
in the Author field, and perhaps a little Purpose you'll be able to quick scan your
own world-class collection of REBOL programs with no time wasted. Later when you update your programs, add a History section to track changes and others will be able
quickly scan through your scripts as well.
+++Extensions
Along with the header fields defined in system/standard/script, you can also define other header fields that can help you keep track of things. If you may want to add
Credits, or References, or whatever you may need for tracking. And as you grow your
REBOL programming skills, these fields can be accessed inside the program.
+++rebol.org
When you reach a level of REBOL programming where you wish to share your work, the
rebol.org repository also requires a Library header field. More about this extension can be found at Help Contribute.
---Back to %directions.r
After the REBOL header, is the actual evaluated script. In this example script,
there is no visible work accomplished. But there is work done. There is a variable
defined, To-New-Office created using a REBOL technique with the name
set-word!.
You can always tell a set-word by the ending colon ":", without a space, following a
variable name. Nearly all programming languages have some form of assignment
operation, and in REBOL the main way to define variables is with the set-word!
technique. And REBOL being highly reflective, set-word! is actually a data type.
What follows the set-word! To-New-Office: is a block! of blocks. block! is another REBOL datatype, perhaps it's most important, that can hold any other REBOL datatypes.
All these values start out as regular words, and then can be evaluated to give more
meaning to the computer. In the case of the directions example, the words in
the block are not defined enough for use by a computer, but they make great directions
for a driver. REBOL being REBOL, these values can be loaded, manipulated and saved
even if they actually hold no real meaning. And REBOL being the cool tool that it is,
these values could be made to hold very specific and helpful meaning with just a few
more lines of code. For now it's ok to just be amazed that the values are readable both by REBOL and by people.
===Credits
\table
File
Author
=row
%directions.r
Unknown, from REBOL Technologies
=row
directions Usage doc
Brian Tiffin
/table
Credit also to the rebol.org library team for keeping the repository up and running. Thanks in large part to Sunanda.