From aed24c637fea62e0a72636fd0a1714a9ecd16a6b Mon Sep 17 00:00:00 2001 From: Alexey Shchepin Date: Sun, 26 Jan 2003 20:16:53 +0000 Subject: *** empty log message *** SVN Revision: 51 --- src/xml.erl | 67 +++++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 48 insertions(+), 19 deletions(-) (limited to 'src/xml.erl') diff --git a/src/xml.erl b/src/xml.erl index 1c5d9213a..76da8a709 100644 --- a/src/xml.erl +++ b/src/xml.erl @@ -10,7 +10,9 @@ -author('alexey@sevcom.net'). -vsn('$Revision$ '). --export([element_to_string/1, crypt/1, remove_cdata/1, +-export([element_to_string/1, + crypt/1, + remove_cdata/1, get_cdata/1, get_tag_cdata/1, get_attr/2, get_attr_s/2, get_tag_attr/2, get_tag_attr_s/2, @@ -38,24 +40,51 @@ attrs_to_string(Attrs) -> attr_to_string({Name, Value}) -> " " ++ crypt(Name) ++ "='" ++ crypt(Value) ++ "'". -crypt(S) -> - lists:reverse(crypt(S, "")). - -crypt([$& | S], R) -> - crypt(S, [$;, $p, $m, $a, $& | R]); -crypt([$< | S], R) -> - crypt(S, [$;, $t, $l, $& | R]); -crypt([$> | S], R) -> - crypt(S, [$;, $t, $g, $& | R]); -crypt([$" | S], R) -> - crypt(S, [$;, $t, $o, $u, $q, $& | R]); -crypt([$' | S], R) -> - crypt(S, [$;, $s, $o, $p, $a, $& | R]); -crypt([C | S], R) -> - crypt(S, [C | R]); -crypt([], R) -> - R. - +%crypt(S) -> +% lists:reverse(crypt(S, "")). +% +%crypt([$& | S], R) -> +% crypt(S, [$;, $p, $m, $a, $& | R]); +%crypt([$< | S], R) -> +% crypt(S, [$;, $t, $l, $& | R]); +%crypt([$> | S], R) -> +% crypt(S, [$;, $t, $g, $& | R]); +%crypt([$" | S], R) -> +% crypt(S, [$;, $t, $o, $u, $q, $& | R]); +%crypt([$' | S], R) -> +% crypt(S, [$;, $s, $o, $p, $a, $& | R]); +%crypt([C | S], R) -> +% crypt(S, [C | R]); +%crypt([], R) -> +% R. + +%crypt1(S) -> +% lists:flatten([case C of +% $& -> "&"; +% $< -> "<"; +% $> -> ">"; +% $" -> """; +% $' -> "'"; +% _ -> C +% end || C <- S]). + +% Not tail-recursive but it seems works faster than variants above +crypt([$& | S]) -> + [$&, $a, $m, $p, $; | crypt(S)]; +crypt([$< | S]) -> + [$&, $l, $t, $; | crypt(S)]; +crypt([$> | S]) -> + [$&, $g, $t, $; | crypt(S)]; +crypt([$" | S]) -> + [$&, $q, $u, $o, $t, $; | crypt(S)]; +crypt([$' | S]) -> + [$&, $a, $p, $o, $s, $; | crypt(S)]; +crypt([C | S]) -> + [C | crypt(S)]; +crypt([]) -> + []. + + remove_cdata_p({xmlelement, Name, Attrs, Els}) -> true; remove_cdata_p(_) -> false. -- cgit v1.2.3