stop atom parsing at feed tag close
This commit is contained in:
1 parent
cd698294c1
commit
ecc2286733
2 files changed
+6
-2
No files matched your search
@@ -17,6 +17,7 @@ defmodule FeedReader.Formats.Atom do
|
||||
limits: XMLResourceLimits.new(opts),
|
||||
frames: [],
|
||||
feed: nil,
|
||||
root_closed: false,
|
||||
error: nil
|
||||
}
|
||||
|
||||
|
||||
@@ -91,10 +91,10 @@ defmodule FeedReader.Formats.Atom.Handler do
|
||||
defp close_element(%{name: "feed"}, feed, %{feed: nil} = state) do
|
||||
state = %{state | feed: feed}
|
||||
state.event_sink.({:feed, Atom.normalize_feed(state, state.opts)})
|
||||
{:ok, state}
|
||||
halt_at_root(state)
|
||||
end
|
||||
|
||||
defp close_element(%{name: "feed"}, _feed, state), do: {:ok, state}
|
||||
defp close_element(%{name: "feed"}, _feed, state), do: halt_at_root(state)
|
||||
|
||||
defp close_element(frame, value, %{frames: [parent | rest]} = state) do
|
||||
children = Map.update(parent.children, frame.name, value, &(List.wrap(&1) ++ [value]))
|
||||
@@ -104,6 +104,9 @@ defmodule FeedReader.Formats.Atom.Handler do
|
||||
|
||||
defp close_element(_frame, _value, state), do: {:ok, state}
|
||||
|
||||
defp halt_at_root(%{frames: []} = state), do: {:halt, %{state | root_closed: true}}
|
||||
defp halt_at_root(state), do: {:ok, state}
|
||||
|
||||
defp render(frame) do
|
||||
attrs = Enum.map_join(frame.attrs, " ", fn {key, value} -> ~s(#{key}="#{value}") end)
|
||||
opening = if attrs == "", do: "<#{frame.name}>", else: "<#{frame.name} #{attrs}>"
|
||||
|
||||
Reference in new issue
Block a user