43 lines
1.1 KiB
Factor
43 lines
1.1 KiB
Factor
! Copyright (C) 2005, 2006 Daniel Ehrenberg
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: namespaces make kernel assocs sequences fry values
|
|
io.files io.encodings.binary xml.state ;
|
|
IN: xml.entities
|
|
|
|
CONSTANT: entities-out
|
|
H{
|
|
{ CHAR: < "<" }
|
|
{ CHAR: > ">" }
|
|
{ CHAR: & "&" }
|
|
}
|
|
|
|
CONSTANT: quoted-entities-out
|
|
H{
|
|
{ CHAR: & "&" }
|
|
{ CHAR: ' "'" }
|
|
{ CHAR: " """ }
|
|
{ CHAR: < "<" }
|
|
}
|
|
|
|
: escape-string-by ( str table -- escaped )
|
|
#! Convert <, >, &, ' and " to HTML entities.
|
|
[ '[ dup _ at [ % ] [ , ] ?if ] each ] "" make ;
|
|
|
|
: escape-string ( str -- newstr )
|
|
entities-out escape-string-by ;
|
|
|
|
: escape-quoted-string ( str -- newstr )
|
|
quoted-entities-out escape-string-by ;
|
|
|
|
CONSTANT: entities
|
|
H{
|
|
{ "lt" CHAR: < }
|
|
{ "gt" CHAR: > }
|
|
{ "amp" CHAR: & }
|
|
{ "apos" CHAR: ' }
|
|
{ "quot" CHAR: " }
|
|
}
|
|
|
|
: with-entities ( entities quot -- )
|
|
[ swap extra-entities set call ] with-scope ; inline
|