summaryrefslogtreecommitdiff
path: root/src/xml_stream.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/xml_stream.erl')
-rw-r--r--src/xml_stream.erl18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/xml_stream.erl b/src/xml_stream.erl
index bb377615..4d7f80d4 100644
--- a/src/xml_stream.erl
+++ b/src/xml_stream.erl
@@ -12,6 +12,11 @@
-export([start/1, init/1, send_text/2]).
+-define(XML_START, 0).
+-define(XML_END, 1).
+-define(XML_CDATA, 2).
+-define(XML_ERROR, 3).
+
start(CallbackPid) ->
spawn(?MODULE, init, [CallbackPid]).
@@ -22,24 +27,23 @@ init(CallbackPid) ->
loop(CallbackPid, Port, Stack) ->
receive
{Port, {data, Bin}} ->
- %CallbackPid ! binary_to_term(Bin),
Data = binary_to_term(Bin),
loop(CallbackPid, Port, process_data(CallbackPid, Stack, Data));
- {From, {send, Str}} ->
+ {_From, {send, Str}} ->
Port ! {self(), {command, Str}},
loop(CallbackPid, Port, Stack)
end.
process_data(CallbackPid, Stack, Data) ->
case Data of
- {xmlstart, {Name, Attrs}} ->
+ {?XML_START, {Name, Attrs}} ->
if Stack == [] ->
gen_fsm:send_event(CallbackPid,
{xmlstreamstart, Name, Attrs});
true -> true
end,
[{xmlelement, Name, Attrs, []} | Stack];
- {xmlend, EndName} ->
+ {?XML_END, EndName} ->
case Stack of
[{xmlelement, Name, Attrs, Els} | Tail] ->
NewEl = {xmlelement, Name, Attrs, lists:reverse(Els)},
@@ -56,10 +60,10 @@ process_data(CallbackPid, Stack, Data) ->
Tail
end
end;
- {xmlcdata, CData} ->
+ {?XML_CDATA, CData} ->
add_subelement({xmlcdata, CData}, Stack);
- {xmlerror, Err} -> gen_fsm:send_event(CallbackPid,
- {xmlstreamerror, Err})
+ {?XML_ERROR, Err} -> gen_fsm:send_event(CallbackPid,
+ {xmlstreamerror, Err})
end.