home *** CD-ROM | disk | FTP | other *** search
/ Hot Shareware 35 / hot35.iso / ficheros / DINET / ORB13DOS.ZIP / ORBMAN.TXT < prev    next >
Text File  |  1996-11-17  |  30KB  |  783 lines

  1.  
  2.                             ORB
  3.                    An HTML Preprocessor
  4.                 Version 1.3 -- October 1996
  5.                              
  6.                        UserÆs Manual
  7.                              
  8.                Copyright 1996 by Craig Berry
  9.                              
  10.                     cberry@cinenet.net
  11.      http://www.cinenet.net/users/cberry/orbinfo.html
  12.  
  13.  
  14. 1.   Overview
  15.  
  16. Orb is a tool for Web developers which makes design,
  17. development, and maintenance of large sites easier.  I
  18. created it while working on my first relatively large Web
  19. project, the Ordo Templi Orientis U.S. Grand Lodge site at
  20. http://otohq.org/oto/ .  The uniform ôlook and feelö of
  21. that site was achieved and is maintained using Orb.
  22.  
  23. Orb source files consist of normal HTML source with
  24. additional Orb-specific markup; the latter is parsed and
  25. replaced by Orb to create a pure HTML output file.  As a
  26. result, existing HTML files can simply be renamed (from
  27. .html to .orb) to become Orb files, with internal changes
  28. then made incrementally.
  29.  
  30.  
  31. 1.1  Major features
  32.  
  33. File Inclusion
  34.  
  35. As in C and other programming languages, you can put common
  36. HTML elements (like navigation bars), variable definitions
  37. (see below), and so forth in "header files," which are then
  38. included by each Orb source file at a site.  Changing the
  39. look or contents of your site is then as easy as changing
  40. one header file and recompiling.
  41.  
  42. Symbolic Variables
  43.  
  44. Nothing is more annoying than re-entering a long link
  45. reference which occurs multiple times across many pages at
  46. a site.  Even if you use an HTML editor to simplify this
  47. task, you're still in trouble if the link address changes;
  48. this requires manual editting of each link instance...if
  49. you can find them all.  Orb allows you to define symbolic
  50. variable names for commonly used addresses, HTML elements,
  51. or whatever -- put these in a common header, and suddenly
  52. your maintenance problem is solved.
  53.  
  54. Time Formatting
  55.  
  56. Orb provides built-in support for including the date and
  57. time of HTML file creation on your pages in any desired
  58. format, using local or GMT time.  This makes it easy to
  59. "time stamp" your documents with last-revision information
  60. automatically.
  61.  
  62. Conditional compilation
  63.  
  64. What HTML gets generated can be made dependent on whether
  65. certain variables have been defined.  This is handy in (for
  66. example) using one source set to generate pages targeted
  67. for different browsers.
  68.  
  69. Better comments
  70.  
  71. Native HTML comments (like <!-- this -->) are notoriously
  72. hard to use.  Different browsers react differently to
  73. tricks such as commenting out HTML markup.  Orb provides
  74. its own comment syntax, for both single-line and block
  75. comments.  These comments entirely disappear during Orb
  76. preprocessing, making your production HTML files cleaner
  77. and shorter.
  78.  
  79. Predefined variables
  80.  
  81. Orb offers a variety of predefined variables for such
  82. things as the time and date of compilation, the Orb and
  83. HTML file names, and so forth.  These simplify many common
  84. site housekeeping chores, such as ensuring that all pages
  85. are marked with their last-modified dates.
  86.  
  87.  
  88. 1.2  Orb vs. CGI/SSI
  89.  
  90. Many of the things Orb is best at (file inclusion, last-
  91. modified date stamping, and so forth) can also be
  92. accomplished using CGI and even its subset, Server-Side
  93. Includes (SSI).  However, Orb is a better solution for
  94. building page data if that data changes relatively
  95. infrequently.  Consider that CGI/SSI requires server-side
  96. system resources on each page fetch to construct the served
  97. page, while Orb allows this overhead to be paid just once,
  98. at page compilation time, with zero additional cost during
  99. page accesses.  Also, CGI and SSI are not available on all
  100. Web servers, nor are the details of usage identical between
  101. servers which do support them.  All told, thereÆs a great
  102. deal to be said for the Orb preprocessing approach over
  103. CGI/SSI.
  104.  
  105.  
  106. 1.3  Availability
  107.  
  108. Orb is available for a number of platforms, including DOS,
  109. OS/2, and various flavors of Unix.  For current information
  110. on supported platforms and other late-breaking
  111. developments, consult the Orb information page at
  112. http://www.cinenet.net/users/cberry/orbinfo.html.
  113.  
  114. Orb is shareware.  If you find this tool useful in creating
  115. and managing your Web sites, please register your copy by
  116. sending $20 (US) to the following address:
  117.  
  118.                Craig Berry
  119.                11301 W. Olympic Blvd., #547
  120.                W. Los Angeles, CA 90064  USA
  121.  
  122. Be sure to include your email and (optionally) snail-mail
  123. address with your payment.  Registering Orb will ensure
  124. that you receive all future upgrades directly by email when
  125. they become available.  Perhaps more important, it will
  126. compensate me for the time and effort involved in creating
  127. Orb, encouraging me and other developers to continue making
  128. high-quality software available through shareware
  129. distribution.
  130.  
  131.  
  132. 1.4  Notes
  133.  
  134. I welcome comments, suggestions, and bug reports concerning
  135. Orb, from both registered and unregistered users.  I can be
  136. reached at cberry@cinenet.net.
  137.  
  138. The name ôOrbö refers to the most commonly recognized form
  139. of spiderweb -- the ôcircles and spokesö variety created by
  140. many garden spiders.  I wanted a short, catchy name which
  141. had something to do with the Web; Orb struck me as a
  142. natural.
  143.  
  144.  
  145. 2.   Installation
  146.  
  147.  
  148. 2.1  Parts list
  149.  
  150. The following files comprise the DOS and OS/2 shareware
  151. packages:
  152.  
  153. ORB.EXE        The Orb preprocessor itself
  154. ORBMAN.TXT     A plain text (ôflat ASCIIö) version of the
  155.                Orb UserÆs Manual
  156. ORBMAN.WRI     A Microsoft Windows Write version of the Orb
  157.                UserÆs Manual
  158. TEST1.ORB      An example Orb home page source file
  159. TEST2.ORB      An example Orb subpage source file
  160. HEADER.ORH     An example Orb header include file
  161. FOOTER.ORH     An example Orb footer include file
  162. TEST.MAK       An example Orb makefile
  163.  
  164. On other operating systems, the .WRI version of the
  165. documentation is omitted, the filenames are lowercase, and
  166. the executable will be named ôorbö with no extension.
  167.  
  168.  
  169. 2.2  System Requirements
  170.  
  171. The following applies only to Orb for DOS:
  172.  
  173. - IBM PC or compatible, 8086+
  174. - DOS v3+
  175. - 100+ KB conventional memory
  176. - Text display (no graphics required)
  177.  
  178. Orb uses no temporary files, initialization files, or
  179. anything of that sort.  The Orb executable contains
  180. everything needed by the Orb application; all other
  181. components of the distribution package are documentation
  182. and examples.  Orb also makes no use of extended or
  183. expanded memory.
  184.  
  185.  
  186. 2.3  Installation steps
  187.  
  188. 1. Create a new directory for the Orb components -- C:\ORB
  189. under DOS, for example.
  190. 2. Copy the Orb distribution files into this directory.
  191. 3. Edit your AUTOEXEC.BAT, .cshrc script, or whatever,
  192. adding the Orb directory to your PATH variable.
  193.  
  194.  
  195. 3.   How It Works
  196.  
  197. Note that in the following description, DOS filename
  198. conventions are used.  Under Unix and many other operating
  199. systems, the standard extensions are lowercase, and can be
  200. longer than three characters.  Orb tries to do the ôright
  201. thingö on each platform.
  202.  
  203. Orb is a preprocessor which allows you to create Web pages
  204. using a superset of HTML.  By convention, Orb input files
  205. have the extension .ORB (for primary source files) or .ORH
  206. (for ôheaderö files which are to be included in other Orb
  207. files).  Orb will (in most cases) generate one output file
  208. (with the default extension .HTM) for each primary source
  209. (.ORB) file it processes, using the original base name of
  210. each input file.  So, for example, the command
  211.  
  212.   orb foo.orb bar.orb baz.orb
  213.  
  214. would (if all went well, and no output-redirection
  215. overrides occurred in the source files) create three files
  216. named FOO.HTM, BAR.HTM, and BAZ.HTM.  One may think of Orb
  217. as compiling .ORB source files for use on your Web site as
  218. .HTM ôexecutables,ö in analogy with the way (for example)
  219. .C source files are compiled into .EXE files by a C
  220. compiler.
  221.  
  222. Because Orb is a superset of HTML, it will (in almost all
  223. cases) pass ordinary HTML content through to the output
  224. file undisturbed.  This is an important consideration if
  225. you are converting existing HTML documents into Orb source
  226. files.  You can achieve the first step just by renaming
  227. XXX.HTM to XXX.ORB, with the latter compiling to yield the
  228. original file.  You may then begin adding Orb elements
  229. incrementally.
  230.  
  231. Orb will only take special action when it finds an Orb
  232. element in the input file.  All Orb elements consist of a
  233. pair of open-square-brackets - [[ - followed by zero or
  234. more other characters, possibly including embedded Orb
  235. elements, followed by a balancing pair of close-square-
  236. brackets - ]] - all on the same source line.  Note that
  237. nesting can occur; the (nonsensical) source line
  238.  
  239.   Blah blah [[foo [[bar]][[baz]]]] and blah blah blah
  240.  
  241. contains one top-level Orb element, which in turn contains
  242. two nested elements.
  243.  
  244. In order to provide maximum compatibility with existing
  245. HTML documents which might happen to contain square-bracket
  246. pairs, Orb will pass through without modification anything
  247. that looks like an element, but cannot be parsed to yield a
  248. valid operation (see next section).  Orb will generate a
  249. warning in this circumstance, however.
  250.  
  251. Orb elements are intended to perform operations -- sending
  252. special text to the output file, or changing the internal
  253. state of Orb itself by defining a variable, or perhaps
  254. conditionally or unconditionally suppressing output from a
  255. region of the source file.  Operations come in two
  256. varieties -- directives and variable references.
  257.  
  258.  
  259. 3.1  Directives
  260.  
  261. Directives all begin with a dollar sign - $ - just inside
  262. the opening [[.  They cause Orb to perform special
  263. functions like setting variable values, outputting
  264. formatted dates, including other files to be processed by
  265. Orb, and controlling processing of sections of the source
  266. file.  The following directives are currently defined (note
  267. that all directive names are case sensitive):
  268.  
  269.  
  270. 3.1.1     Variable value manipulation
  271.  
  272. $define name {value}
  273. [Synonyms:  $def, $set]
  274. Sets the value of an Orb variable, which may then be used
  275. in later variable references (see below).  If name has
  276. already been set, the new value quietly replaces the old
  277. one.  The name should include only letters, digits, and
  278. underscores, start with a letter or underscore, and be at
  279. most 32 characters long (these limitations are not all
  280. currently enforced, but will be in an upcoming version).
  281. The value may contain spaces, embedded Orb elements, and
  282. anything else up to the closing ]] -- though remember that
  283. it must all fit on a single source line.  Leading spaces in
  284. the value are not included, but explicit spaces may be
  285. obtained using the SP predefined variable if required.  If
  286. value is not provided, a zero-length string is used.  The
  287. $def synonym is intended as a convenient abbreviation which
  288. also better parallels $ifdef, $undef, and so forth.  The
  289. $set synonym is provided for backward-compatibility with
  290. earlier versions of Orb.  The next major version will drop
  291. support for $set, so donÆt use it in new development, and
  292. change old source to use $def/$define as soon as possible.
  293. Example:  [[$define email cberry@cinenet.net]]
  294.  
  295. $undef name
  296. Causes Orb to ôforgetö the value of a variable.  No warning
  297. is generated if the variable does not exist.
  298. Example:  [[$undef email]]
  299.  
  300. $val var {default}
  301. If the variable var is defined, this behaves just like a
  302. simple variable reference (see below), substituting that
  303. variableÆs value into the output.  If var is not defined,
  304. the value of default is used instead.  If default is not
  305. provided, no output occurs for this directive.
  306. Example:  [[$val title No title provided]]
  307.  
  308.  
  309. 3.1.2     Conditional compilation
  310.  
  311. $ifdef name
  312. Starts a conditional-compilation block.  If name is
  313. defined, everything proceeds normally until an $else or
  314. $endif is encountered.  If name is not defined, nothing
  315. will be processed from the source file until the next $else
  316. or $endif.  In the $else case, the source between that
  317. $else and the closing $endif will be processed if the code
  318. above the $else was not, and vice versa.  See ôConditional
  319. Logicö below for more discussion and examples.
  320. Example:  [[$ifdef toplevel]]Hey, I have a top
  321. level![[$endif]]
  322.  
  323. $ifndef name
  324. The reverse of $ifdef; conditonally compiles based on
  325. whether name is not defined.
  326. Example:  [[$ifndef toplevel]]Oops, I donÆt have a top
  327. level![[$endif]]
  328.  
  329. $else
  330. Only occurs inside if-blocks (see $ifdef).  Causes the
  331. conditional state to flip; active if it was inactive, and
  332. vice versa.  Only one $else can follow each $ifdef/$ifndef.
  333. Example:
  334. [[$ifdef foo]]
  335. I have foo...
  336. [[$else]]
  337. I donÆt have foo.
  338. [[$endif]]
  339.  
  340. $endif
  341. Closes an if-block.  Only one can follow a given
  342. $ifdef/$ifndef.
  343.  
  344.  
  345. 3.1.3     File handling
  346.  
  347. $include filename
  348. Brings the entire contents of the named file into the
  349. current one, as if the text of that file were contained in
  350. this one.  By convention, files intended for inclusion in
  351. this manner have the extension .ORH (ôORb Headerö).  Note
  352. that the -I command line option and the ORBPATH environment
  353. variable can be used to specify additional directories in
  354. which to search for include files.  The current directory
  355. is always searched first, then any -I paths, and finally
  356. paths from ORBPATH.
  357. Example:  [[$include header.orh]]
  358.  
  359. $target filename
  360. Closes the current output (ôtargetö) file, opens the named
  361. file as the new output file, and continues compilation of
  362. the source file.  This allows a single Orb source file to
  363. produce several HTML output files.
  364. Example:  [[$target part2.html]]
  365.  
  366.  
  367. 3.1.4     Time formatting
  368.  
  369. $time {mode {format}}
  370. Sends a textual representation of the current system time
  371. at the start of compilation to the output file.  The mode
  372. argument can be lcl, which selects local time, or gmt,
  373. which selects Greenwich Mean Time, also known as UTC time.
  374. The format argument provides a time format string of the
  375. type used by the ANSI C strftime() function (see Appendix C
  376. for details).  If no arguments are given, local time is
  377. assumed; if no format is supplied, the output looks like
  378. this:  1996/03/17 15:23:34  -- with the hour in 24-hour
  379. (ômilitaryö) format.  See also the datetime_gmt and
  380. datetime_lcl predefined variables, described below, for
  381. another approach to using time value in Orb.
  382. Example:  [[$time gmt %M/%D/%y]]
  383. This example outputs the month, day, and two-digit year,
  384. separated by slashes.
  385.  
  386.  
  387. 3.1.5     Comments
  388.  
  389. $comment
  390. [Synonym:  $/*]
  391. Opens a comment block.  This will inactivate all other Orb
  392. processing and output until a matching $endcomment
  393. (synonym: $*/) is encountered.  Note that this even
  394. overrides conditional compilation; a comment opening inside
  395. an ôinactiveö block will start a comment block, which will
  396. in turn hide all conditional directives until the comment
  397. closes.  The synonym $/* is inspired by the C open-comment
  398. marker.
  399. Example:  [[$/*]]Here I am, inside a comment[[$*/]]
  400.  
  401. $endcomment
  402. [Synonym:  $*/]
  403. Closes a comment block.
  404.  
  405. $rem anything
  406. [Synonym:  $//]
  407. Completely ignores its arguments and sends nothing to the
  408. output file.  The may be used to put comments (ôremö is
  409. short for ôremarkö) in Orb text.  The $// synonym is
  410. inspired by the C++ unterminated-comment mark; note that
  411. (unlike the C++ version) a space must separate the $// and
  412. what follows.
  413. Example:  [[$rem This section defines globally useful
  414. links.]]
  415.  
  416.  
  417. 3.1.6     User-detected errors
  418.  
  419. $error anything
  420. [Synonym: $err]
  421. Halts Orb processing with a fatal error, incorporating the
  422. error-message in the resulting message to the user.  This
  423. can be combined with conditional processing to detect
  424. configuration problems; for example, if some value is
  425. supposed to be provided on the Orb command line using the -
  426. D option (see below), you can check for this using this
  427. syntax...
  428. Example:
  429.   [[$ifndef cfgparm]]
  430.   [[$error cfgparm not defined on command line!]]
  431.   [[$endif]]
  432.  
  433. $message anything
  434. [Synonym: $msg[
  435. Similar to $error, but for informational and warning-level
  436. messages.  Does not halt Orb processing.
  437.  
  438.  
  439. 3.2  Variable References
  440.  
  441. The value of a variable defined with the $def directive
  442. (see above) or provided by Orb (see below) can be placed in
  443. the output file using a variable reference.  This consists
  444. simply of the name of the variable, enclosed by bracket
  445. pairs as usual.  So, for example, the Orb source statements
  446.  
  447.   [[$def email cberry@cinenet.net]]
  448.   
  449.   You can <A HREF=ômailto:[[email]]ö>contact me</A>
  450.   for more information about Orb.
  451.  
  452. would produce this output:
  453.  
  454.   You can <A HREF=ômailto:cberry@cinenet.net>contact me</A>
  455.   for more information about Orb.
  456.  
  457. As mentioned above, each variable reference returns the
  458. most recent value assigned to that variable.  Note that an
  459. Orb element which looks like a variable reference, but
  460. names a nonexistent variable, will be passed through ôrawö
  461. (square brackets and all) to the output.  The Orb compiler
  462. will generate a warning message if this occurs.
  463.  
  464.  
  465. 3.3  Predefined Orb variables
  466.  
  467. The Orb compiler itself makes a few useful variables
  468. available to you.  Note that your own Orb code should avoid
  469. changing these values, though nothing prevents you from
  470. doing so.
  471.  
  472.  
  473. 3.3.1     Orb configuration information
  474.  
  475. orb_platform   The platform on which Orb is being run
  476.                (e.g., ôDOSö).
  477.  
  478. orb_vernum     The version number of Orb, X.Y (e.g.,
  479.                ô1.2ö).
  480.  
  481. orb_version    A string indicating OrbÆs version and
  482.                platform information (e.g., ôOrb v1.2 for
  483.                DOSö).
  484.  
  485. orb_generator  A preformatted META tag, suitable for direct
  486.                inclusion in an HTML <HEAD> section,
  487.                indicating that the target HTML document was
  488.                generted by Orb (e.g., ô<META
  489.                NAME=ôgeneratorö CONTENT=ôOrb v1.2 for
  490.                DOSö>ô).
  491.  
  492.  
  493. 3.3.2     File information
  494.  
  495. base           The name of the primary source file (the
  496.                .ORB file, most typically) which is
  497.                currently being compiled.  Note that this
  498.                stays fixed throughout the compilation of a
  499.                given .ORB file, as opposed to the source
  500.                variable (see below), which changes to track
  501.                included files.
  502.  
  503. source         The name of the specific source file
  504.                currently being processed by Orb.
  505.                Initially, this will be the same value as
  506.                base, but source will change if other files
  507.                are brought in using the $include directive.
  508.  
  509. target         The target, or output file, of the current
  510.                compilation; typically a file with the
  511.                extension .html.
  512.  
  513.  
  514. 3.3.3     Time information
  515.  
  516. datetime_gmt   The date and time at the start of Orb
  517.                compilation, expressed in the HTTP standard
  518.                format, which looks like:  Sunday, 03-Mar-96
  519.                23:45:14 GMT
  520.  
  521. datetime_local As above, but the local time rather than
  522.                GMT.  If your environment is set up properly
  523.                (most notably, if youÆve defined the
  524.                environment variable TZ), your own timezone
  525.                code will replace GMT at the end of the
  526.                string.
  527.  
  528.  
  529. 3.3.4     Special characters
  530.  
  531. OBR            One open-square-bracket - [
  532.  
  533. OBR2           Two open-square-brackets - [[
  534.  
  535. CBR            One close-square-bracket - ]
  536.  
  537. CBR2           Two close-square-brackets - ]]
  538.  
  539. NL             Newline.  Becaue it's currently difficult to
  540.                represent a newline in ORB, this predefined
  541.                variable is provided for your use.  Because
  542.                of the near insensitivity of HTML to textual
  543.                line structure, the uses of this variable
  544.                should be relatively few.
  545.  
  546. SP             A single space character.  This is useful
  547.                for adding blank space to the beginning of a
  548.                variableÆs value in a $def directive.
  549.  
  550.  
  551. 4.   File processing
  552.  
  553. A backslash \ at the very end of a line (followed by
  554. nothing but the end-of-line character) may be used to
  555. ôspliceö two lines together.  The \ itself is discarded.
  556. This can be used to spread an Orb element over several
  557. source lines, while obeying the one-line-per-element rule.
  558.  
  559. In the unlikely event your source has meaninful \
  560. characters at the ends of lines which must be preserved in
  561. the output HTML, the -s option turns off line splicing.
  562. However, note that putting a space after the \ would
  563. accomplish the same goal.  The -s option is provided only
  564. in the interests of fulfilling OrbÆs design goal of passing
  565. through all existing HTML source without modification.
  566.  
  567.  
  568. 5.   Running Orb
  569.  
  570. Orb accepts a number of command line options.  The full
  571. syntax is:
  572.  
  573.   orb { opt | file }+
  574.  
  575. That is, an orb command may take one or more arguments,
  576. which can be options and file names in any order.  Note
  577. that options (which begin with a dash) only apply to files
  578. listed after that option.  Thus, typically you will want to
  579. put all the options first.
  580.  
  581. The options available are:
  582.  
  583. -b             ôBashfulö mode -- suppresses title/copyright
  584.                message.
  585.  
  586. -Ccase         Controls case-adjustment of all filenames.
  587.                This option will rarely be necessary on
  588.                operating systems other than DOS.  The three
  589.                case values supported are L (lowercase), U
  590.                (uppercase), and M (mixed case).  The
  591.                default is -CL under DOS, and -CM on all
  592.                other operating systems.  Because DOS
  593.                filenames are case insensitive, it is wise
  594.                to force them to a single case for
  595.                consistency.  Generally, lowercase is more
  596.                attractive, but you can force uppercase
  597.                using -CU.
  598.  
  599. -Dvar={val}    One syntax for command-line variable
  600.                definition.  Within all source files listed
  601.                after this option, the variable var will be
  602.                defined with the value val, just as if it
  603.                had appeared in a $def directive.  If val is
  604.                omitted, var will be given a zero-length
  605.                string value.
  606.  
  607. -Dvar val      Alternate syntax for command-line variable
  608.                definition.  In this form, the value is
  609.                listed as a separate argument, immediately
  610.                following the -D option.  On some operating
  611.                systems (notably DOS), this makes it
  612.                possible to define variables from the
  613.                command line whose values contain spaces
  614.                (e.g., -Dtitle ôMy Home Pageö).
  615.  
  616. -Ipath         Give alternate directories in which to find
  617.                include files (see $include directive,
  618.                above).  Directories are separated by
  619.                semicolons under DOS and OS/2, and by colons
  620.                elsewhere.
  621.  
  622. -h or -?       Prints out an abbreviated version of this
  623.                option description.
  624.  
  625. -ofilename     Send output to the named file, overriding
  626.                the default behavior of using the source
  627.                file basename and a .html extension.
  628.  
  629. -o+{filename}  Send output to the ôstandard outputö (the
  630.                screen, unless you redirect it via a pipe or
  631.                > on the command line).  If the optional
  632.                file name is supplied, Orb pretends
  633.                internally that itÆs writing to the file
  634.                named for purpses of setting the target
  635.                variable.
  636.  
  637. -q and -v      By default, Orb produces enough output to
  638.                let you know that progress is being made,
  639.                without going overboard with detailed
  640.                messages.  These two options can be used to
  641.                change this behavior.  -q selects ôquietö
  642.                mode, in which only the copyright notice and
  643.                serious error messages appear.  -v selects
  644.                ôverboseö mode, in which more low-level
  645.                information about Orb processing is
  646.                displayed.
  647.  
  648. -s             Turns off line-splicing (see ôFile
  649.                processing,ö above).
  650.  
  651. -xstring       By default, Orb will use the extension .html
  652.                for the output files it generates.  The -x
  653.                option allows you to specify a different
  654.                string for Orb to use.  It may be up to 10
  655.                characters long.  You should not include the
  656.                initial period in this string!  Note that
  657.                only the first three characters will
  658.                actually appear in the generated fileÆs name
  659.                under DOS, but the target predefined
  660.                variable will have the full extension.
  661.  
  662. For example, the Orb command line
  663.  
  664.   orb -v -xhtx -Dtitle ôTestö -Dlogo=logo13.gif test1.orb
  665.  
  666. would compile test1.orb to test1.htx, producing lots of
  667. output along the way.  The variables ôtitleö and ôlogoö
  668. would be defined as indicated during the compilation.
  669.  
  670. Wildcards in file names are fully supported, following the
  671. usual conventions for each operating system.  Orb will
  672. return a zero status code on successful completion; any
  673. nonzero value indicates a compilation failure has occurred.
  674.  
  675. An environment variable, ORBPATH, may be used to specify a
  676. standard set of paths to search for include files.  Under
  677. DOS, the list of paths should be separated with semicolons;
  678. on all other platforms, colons should be used.  For
  679. example, you might add this line to your AUTOEXEC.BAT under
  680. DOS:
  681.  
  682.   set ORBPATH=c:\www\pages\std;c:\www\pages\local
  683.  
  684. This would cause Orb to search first the current directory,
  685. then any directories specified using the -I command line
  686. option, and finally these two directories when trying to
  687. locate an include file.
  688.  
  689.  
  690. 6.   Orb and MAKE
  691.  
  692. Orb is easy to use with any standard MAKE program.  MAKE is
  693. a utility included with many compilers which simplifies the
  694. process of building large software systems.  MAKE operates
  695. on a "Makefile" which contains instructions on how to
  696. transform source files into object code.  It examines file
  697. revision dates to ensure that only necessary compilations
  698. occur.  The example file TEST.MAK, included with this
  699. distribution, demonstrates one way to set up an implicit
  700. rule for building HTML files from Orb source files.
  701. Obviously, this two-page project cannot really display the
  702. usefulness of MAKE, but for larger projects, MAKE's ability
  703. to rebuild only those components necessary after a source
  704. change can be very, very useful.
  705.  
  706.  
  707. 7.   Example Files
  708.  
  709. Included with the shareware distribution of Orb are four
  710. example Orb source files, TEST1.ORB, TEST2.ORB, HEADER.ORH,
  711. and FOOTER.ORH.  You can compile the two example .ORB files
  712. to TEST1.HTM and TEST2.HTM by entering the command
  713.  
  714.   orb *.orb
  715.  
  716. or, if you have a typical MAKE program, you can enter the
  717. command
  718.  
  719.   make -ftest.mak
  720.  
  721. Note that HEADER.ORH and FOOTER.ORH are intended to
  722. demonstrate how a consistent ôlook and feelö can be
  723. attained by encapsulating common HTML elements in include
  724. files; these files could be shared by many other .ORB files
  725. at a large site.
  726.  
  727. Appendix A: Acknowledgments
  728.  
  729. Two Orb beta testers, Arnoud Galactus Engelfriet and Nick
  730. Sweeney, deserve special recognition.  Their feature
  731. suggestions and boundless patience with buggy early betas
  732. have been of enormous value to me.
  733.  
  734. Appendix B: Change History
  735.  
  736. 1996/03/01     1.0:  Original release
  737. 1996/03/25     1.0a:  Doc-only update - coverage of all
  738.                operating systems, pointer to Orb web page,
  739.                more overview material.
  740. 1996/04/01     1.1:  -C, -D, -I, -?/h command-line opts,
  741.                $val and $target directives, support for
  742.                empty-value $set, ORBPATH environment
  743.                variable.
  744. 1996/05/23     1.2:  conditionals, block comments, line
  745.                splicing, error directive, many new
  746.                predefined variables.
  747. 1996/11/17     1.3:  Better memory handling, many bug
  748.                fixes.
  749.  
  750. Appendix C: Time formatting
  751.  
  752. Here are some typical values for time format strings used
  753. by the $time directive.  The exact set available will vary
  754. from platform to platform; under Unix, do ôman strftimeö to
  755. see your local list.
  756.  
  757. %%   same as the ``percent'' character (%)
  758. %a   locale's abbreviated weekday name (ôSunö)
  759. %A   locale's full weekday name (ôSundayö)
  760. %b   locale's abbreviated month name (ôNovö)
  761. %B   locale's full month name (ôNovemberö)
  762. %c   locale's appropriate date and time representation
  763. %d   day of month ( 01 - 31 )
  764. %H   hour ( 00 - 23 )
  765. %I   hour ( 01 - 12 )
  766. %j   day number of year ( 001 - 366 )
  767. %m   month number ( 01 - 12 )
  768. %M   minute ( 00 - 59 )
  769. %p   locale's equivalent of either AM or PM
  770. %S   seconds ( 00 - 61 ), allows for leap seconds
  771. %U   week number of year ( 00 - 53  ),  Sunday  is  the
  772.      first day of week 1
  773. %w   weekday number ( 0 - 6 ), Sunday = 0
  774. %W   week number of year ( 00 - 53  ),  Monday  is  the
  775.      first day of week 1
  776. %x   locale's appropriate date representation
  777. %X   locale's appropriate time representation
  778. %y   year within century ( 00 - 99 )
  779. %Y   year as ccyy ( for example 1986)
  780. %Z   time zone name or no characters if  no  time  zone
  781.      exists
  782.  
  783.