hsc adds some special attributes, which can be quite useful to include special data or configure the parser.

<* insert heading for another special attribute *> <$macro SPCATTR NAME:string/r TITLE:string/r>

<(title)>

Attributes containing special data

<**********************************************************> <* HSC.Anchor *> <**********************************************************>

This attribute is defined internally during startup and is maintained by . It contains the URI of the last anchor referenced to.

Example: <$include FILE="exmpl/anchor.hsc" SOURCE PRE> will be converted to:
<$include FILE="exmpl/anchor.hsc">
<**********************************************************> <* HSC.Content *> <**********************************************************>

This attribute is defined internally during startup and is maintained by . It contains the the text which will be inserted if a $content shows up, and is updated at every call to a container macro. <**********************************************************> <* HSC.Document *> <**********************************************************>

These attributes are defined internally during startup and are read-only. They contain the filename, the directory and the whole relative URI of the to be created html-object.

For example, <$source PRE> hsc FROM people/hugo.hsc TO html:my_project/ will lead to <*<$source PRE> attribute | value ------------------+---------------- HSC.DOCUMENT.NAME | "hugo.html" HSC.DOCUMENT.PATH | "people/" HSC.DOCUMENT.URI | "people/hugo.html" *>
attribute value
HSC.DOCUMENT.NAME "hugo.html"
HSC.DOCUMENT.PATH "people/"
HSC.DOCUMENT.URI "people/hugo.html"
Note that HSC.DOCUMENT.PATH does not contain the whole destination-directory, but only the relative path. This attribute contains the return-code of the command invoked using . It is updated after every call of this hsc-tag. <**********************************************************> <* HSC.LF *> <**********************************************************> This attribute contains a single linefeed-character (\n) and can be used to include linefeeds into attribute-values without whining about them. <**********************************************************> <* HSC.Source... *> <**********************************************************>

These attributes are defined internally during startup and are read-only. They contain the filename, the directory and the full path and filename of the hsc-source you've passed specified when invoking .

For example, <$source PRE> hsc FROM people/hugo.hsc TO html:my_project/ will lead to <*<$source PRE> attribute | value ----------------+---------------- HSC.SOURCE.NAME | "hugo.hsc" HSC.SOURCE.PATH | "people/" HSC.SOURCE.FILE | "people/hugo.hsc" *>
attribute value
HSC.SOURCE.NAME "hugo.hsc"
HSC.SOURCE.PATH "people/"
HSC.SOURCE.URI "people/hugo.hsc"
<**********************************************************> <* HSC.System *> <**********************************************************>

This attribute is defined internally during startup and is read-only. It contains a value depending on the operating system is running on.

<*
    OS      | HSC.SYSTEM
    --------+-----------
    AmigaOS | AMIGA
    RiscOS  | RISCOS
    Unixoid | UNIX
*>
OS HSC.SYSTEM
AmigaOS AMIGA
RiscOS RISCOS
Unixoid UNIX
This can be useful if you are executing a shell-command during conversion. See for an example how to include a listing of the current directory, working with more then only a specific OS. <**********************************************************> <* HSC.TMP... *> <**********************************************************>

For several tasks, declares it's own temporary attributes for internal use. Most of them can't even be refered to by you. The only reason why I list them here is, that some of them might show up in messages.

For example, if you are using the special tag <(...)> (insert expression), creates an attribute HSC.TMP.insert.expression to assign the value of the expression you passed between the brackets. If this expression now is corrupt, you will achieve a message mentioning the attribute HSC.TMP.insert.expression.

Attributes for configuration

<**********************************************************> <* HSC.Color-Names *> <**********************************************************>

This attribute is defined in and can be altered to the user's needs. However, it's value is only scanned once and later changes will not be recognised by .

For attributes of type COLOR, you can not only use the cryptic #rrggbb-style, but also use some predefined values. With this attribute you can declare which values should know about, each separated by a .

Example: <$source><$define HSC.COLOR-NAMES:string/c="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|purple|red|silver|teal|white|yellow">

This one contains all values recommended for html-0.32 and is in the that came with this distribution.

<**********************************************************> <* HSC.Click-Here *> <**********************************************************>

This attribute is defined in and can be altered to the user's needs. However, it's value is only scanned once and later changes will not be recognised by .

Inside an anchor tag (A HREF="..."), the normal text is scanned for special keywords indicating a click here-syndrome. With this attribute you can declare these keywords, each separated by a . Example: <$source PRE><$define HSC.CLICK-HERE:string/c="click|here">

When processing German documents, probably this one would fit better:

<$source PRE><$define HSC.CLICK-HERE:string/c="klicken|hier"> <**********************************************************> <* HSC.Format.filesize *> <**********************************************************> This attribute contains a template that descibes how the result of should be rendered. Conversion specifications:
    %b    is replaced by the filesize in bytes.
    %k    is replaced by the filesize in kilo-bytes.
    %m    is replaced by the filesize in mega-bytes.
    %g    is replaced by the filesize in giga-bytes.
    %a    is replaced by the filesize, with a reasonable unit computed automatically
    %u    is replaced by the unit for %a
This attribute is defined internally during startup, and contains the value "%a%u", leading to results like "123K" or "12M". It can be changed by the user at any time. <**********************************************************> <* HSC.Format.Time *> <**********************************************************> This attribute contains a template that describes how the result of and should be rendered. Conversion specifications (Techn. Note: These are the same as for ANSI-C's strftime()):
    %A    is replaced by the full weekday name.
    %a    is replaced by the abbreviated weekday name, where the abbreviation
           is the first three characters.
    %B    is replaced by the full month name.
    %b or %h
           is replaced by the abbreviated month name, where the abbreviation
           is the first three characters.
    %C    is equivalent to %a %b %e %H:%M:%S %Y
    %c    is equivalent to %m/%d/%y.
    %D    is replaced by the date in the format mm/dd/yy.
    %d    is replaced by the day of the month as a decimal number (01­31).
    %e    is replaced by the day of month as a decimal number (1­31); single
           digits are preceded by a blank.
    %H    is replaced by the hour (24­hour clock) as a decimal number
           (00­23).
    %I    is replaced by the hour (12­hour clock) as a decimal number
           (01­12).
    %j    is replaced by the day of the year as a decimal number (001­366).
    %k    is replaced by the hour (24­hour clock) as a decimal number (0­23);
           single digits are preceded by a blank.
    %l    is replaced by the hour (12­hour clock) as a decimal number (1­12);
           single digits are preceded by a blank.
    %M    is replaced by the minute as a decimal number (00­59).
    %m    is replaced by the month as a decimal number (01­12).
    %n    is replaced by a newline.
    %p    is replaced by either AM or PM as appropriate.
    %R    is equivalent to %H:%M
    %r    is equivalent to %I:%M:%S %p.
    %t    is replaced by a tab.
    %S    is replaced by the second as a decimal number (00­60).
    %s    is replaced by the number of seconds since the Epoch, UCT.
    %T or %X    
           is equivalent to %H:%M:%S.
    %U    is replaced by the week number of the year (Sunday as the first day
           of the week) as a decimal number (00­53).
    %W    is replaced by the week number of the year (Monday as the first day
           of the week) as a decimal number (00­53).
    %w    is replaced by the weekday (Sunday as the first day of the week) as
           a decimal number (0­6).
    %x    is equivalent to %m/%d/%y %H:%M:%S.
    %Y    is replaced by the year with century as a decimal number.
    %y    is replaced by the year without century as a decimal number
           (00­99).
    %Z    is replaced by the time zone name.
    %%    is replaced by %.
This attribute is defined internally during startup, and contains the value %d-%b-%Y, %H:%M, leading to results like "<(GetTime())>".