[REBOL] Re: 'ML problem with literal quotation marks
From: andrew:martin:colenso:school at: 24-Dec-2003 22:40
Earlier, I wrote:
> My ... Build-Tag dialect should check every string! attribute value
and 'escape' any double quote marks inside (so that people don't have to
worry about this.)
Build-Tag: function [
"Generates a tag from a composed block."
Values [block!] "Block of parens to evaluate and other data."
] [
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: remove mold Value)
| set Value url! (Value: mold Value)
| set Value lit-path!
| set Value string! (replace/all Value {"} """)
| set Value any-type! (Value: form :Value)
]
XML?: false
parse compose Values [
[
set Name ['?xml (XML?: true) | word! | url! | string!]
(insert tail Tag Name)
any [
set Attribute [word! | url! | string!] Value_Rule (
repend Tag [#" " Attribute {="} Value {"}]
)
| Value_Rule (insert/only tail Tag reduce [#" " Value])
]
end (if XML? [insert tail Tag #"?"])
]
| [set Name refinement! to end (Tag: mold Name)]
]
to tag! Tag
]
The change is this line:
| set Value string! (replace/all Value {"} """)
which escapes {"} with the appropriate HTML code.
Testing:
>> test: {"boo-boo"} ; literal quotes
== {"boo-boo"}
>> print ml compose/deep[
[ html[
[ body[
[ input/type/name/value "text" "testing" (test)
[ ]
[ ]
[ ]
<html><body><input type="text" name="testing"
value=""boo-boo"" /></body></html>
And displays:
"boo-boo"
in the input field.
Enjoy!
Andrew J Martin
Attendance Officer
& Grail Jedi.
Successively refining oneself...
Colenso High School
Arnold Street, Napier.
Tel: 64-6-8310180 ext 826
Fax: 64-6-8336759
http://colenso.net/scripts/Wiki.r?AJM
http://www.colenso.school.nz/
DISCLAIMER: Colenso High School and its Board of Trustees is not responsible (or legally
liable) for materials distributed to or acquired from user e-mail accounts. You can report
any
misuse of an e-mail account to our ICT Manager and the complaint will be investigated.
(Misuse can come in many forms, but can be viewed as any material sent/received that
indicate or suggest pornography, unethical or illegal solicitation, racism, sexism, inappropriate
language and/or other issues described in our Acceptable Use Policy.)
All outgoing messages are certified virus-free by McAfee GroupShield Exchange 5.10.285.0
Phone: +64 6 843 5095 or Fax: +64 6 833 6759 or E-mail: [postmaster--colenso--school--nz]