Jump to content

Rebol Programming/build-markup

From Wikibooks, open books for an open world

USAGE:

[edit | edit source]
BUILD-MARKUP content /quiet 

DESCRIPTION:

[edit | edit source]

Return markup text replacing <%tags%> with their evaluated results.

BUILD-MARKUP is a function value.

ARGUMENTS

[edit | edit source]
  • content -- (Type: string file url)

REFINEMENTS

[edit | edit source]
  • /quiet -- Do not show errors in the output.

SOURCE CODE

[edit | edit source]
build-markup: func [
    {Return markup text replacing <%tags%> with their evaluated results.} 
    content [string! file! url!] 
    /quiet "Do not show errors in the output." 
    /local out eval value
][
    content: either string? content [copy content] [read content] 
    out: make string! 126 
    eval: func [val /local tmp] [
        either error? set/any 'tmp try [do val] [
            if not quiet [
                tmp: disarm :tmp 
                append out reform ["***ERROR" tmp/id "in:" val]
            ]
        ] [
            if not unset? get/any 'tmp [append out :tmp]
        ]
    ] 
    parse/all content [
        any [
            end break 
            | "<%" [copy value to "%>" 2 skip | copy value to end] (eval value) 
            | copy value [to "<%" | to end] (append out value)
        ]
    ] 
    out
]