REBOL Programming/build-tag

From Wikibooks, open books for an open world
< REBOL Programming
Jump to: navigation, search


BUILD-TAG values 


Generates a tag from a composed block.

BUILD-TAG is a function value.


  • values -- Block of parens to evaluate and other data. (Type: block)


build-tag: func [
    "Generates a tag from a composed block." 
    values [block!] "Block of parens to evaluate and other data." 
    /local tag value-rule xml? name attribute value
    tag: make string! 7 * length? values 
    value-rule: [
        set value issue! (value: mold value) 
        | set value file! (value: replace/all copy value #" " "%20") 
        | set value any-type!
    xml?: false 
    parse compose values [
            set name ['?xml (xml?: true) | word!] (append tag name) 
            any [
                set attribute [word! | url!] value-rule (
                    repend tag [#" " attribute {="} value {"}]
                | value-rule (repend tag [#" " value])
            end (if xml? [append tag #"?"])
        [set name refinement! to end (tag: mold name)]
    to tag! tag