63 lines
1.1 KiB
Plaintext
63 lines
1.1 KiB
Plaintext
note
|
|
description: "[
|
|
Interface common to any FEED parser.
|
|
|
|
Usage:
|
|
create parser
|
|
if attached parser.feed_from_string (l_feed_content) as l_feed then
|
|
...
|
|
|
|
]"
|
|
date: "$Date$"
|
|
revision: "$Revision$"
|
|
|
|
deferred class
|
|
FEED_PARSER
|
|
|
|
inherit
|
|
FEED_PARSER_UTILITIES
|
|
|
|
feature -- Access
|
|
|
|
name: STRING
|
|
-- Associated name.
|
|
deferred
|
|
ensure
|
|
not_blanc: not Result.is_whitespace
|
|
end
|
|
|
|
is_detected (xdoc: XML_DOCUMENT): BOOLEAN
|
|
-- Is `xdoc' an feed representation or Current supported format?
|
|
deferred
|
|
end
|
|
|
|
feed (xdoc: XML_DOCUMENT): detachable FEED
|
|
-- Feed from `xdoc' XML document.
|
|
require
|
|
is_detected: is_detected (xdoc)
|
|
deferred
|
|
end
|
|
|
|
feature -- Basic operations
|
|
|
|
feed_from_string (a_content: READABLE_STRING_8): like feed
|
|
-- Feed from `a_content' document.
|
|
local
|
|
p: XML_STANDARD_PARSER
|
|
cb_tree: XML_CALLBACKS_FILTER_DOCUMENT
|
|
xdoc: XML_DOCUMENT
|
|
do
|
|
create p.make
|
|
create cb_tree.make_null
|
|
p.set_callbacks (cb_tree)
|
|
p.parse_from_string_8 (a_content)
|
|
if p.is_correct then
|
|
xdoc := cb_tree.document
|
|
if is_detected (xdoc) then
|
|
Result := feed (xdoc)
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|