Improved feed library:
- Added missing link to FEED. - Closer to ATOM validation, especially for xhtml content. - Closer to RSS2 specification. - Removed unwanted conversion from STRING_32 to STRING_8. (fixing feed generation when dealing with Unicode content).
This commit is contained in:
@@ -83,13 +83,9 @@ feature -- Visitor
|
|||||||
append_content_tag_to ("summary", Void, a_entry.description, buffer)
|
append_content_tag_to ("summary", Void, a_entry.description, buffer)
|
||||||
if attached a_entry.content as l_content then
|
if attached a_entry.content as l_content then
|
||||||
if attached a_entry.content_type_or_default ("xhtml").is_case_insensitive_equal_general ("xhtml") then
|
if attached a_entry.content_type_or_default ("xhtml").is_case_insensitive_equal_general ("xhtml") then
|
||||||
-- if l_content.has_substring ("<div xmlns=%"http://www.w3.org/1999/xhtml%">") then
|
|
||||||
append_content_tag_to ("content", <<["type", "xhtml"]>>, l_content, buffer)
|
append_content_tag_to ("content", <<["type", "xhtml"]>>, l_content, buffer)
|
||||||
-- else
|
|
||||||
-- append_content_tag_to ("content", <<["type", "xhtml"]>>, {STRING_32} "<div xmlns=%"http://www.w3.org/1999/xhtml%">" + l_content + {STRING_32} "</div>", buffer)
|
|
||||||
-- end
|
|
||||||
else
|
else
|
||||||
append_content_tag_to ("content", <<["type", a_entry.content_type]>>, a_entry.content, buffer)
|
append_content_tag_to ("content", <<["type", a_entry.content_type]>>, l_content, buffer)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -138,6 +138,18 @@ feature -- Element change
|
|||||||
Result.sort
|
Result.sort
|
||||||
end
|
end
|
||||||
|
|
||||||
|
set_link (a_url: READABLE_STRING_8; rel: detachable READABLE_STRING_GENERAL)
|
||||||
|
-- Set link `a_url` for relation `rel`.
|
||||||
|
local
|
||||||
|
lnk: FEED_LINK
|
||||||
|
do
|
||||||
|
create lnk.make (a_url)
|
||||||
|
if rel /= Void then
|
||||||
|
lnk.set_relation (rel)
|
||||||
|
end
|
||||||
|
links.force (lnk, lnk.relation)
|
||||||
|
end
|
||||||
|
|
||||||
sort
|
sort
|
||||||
-- Sort `items', (recent first).
|
-- Sort `items', (recent first).
|
||||||
local
|
local
|
||||||
|
|||||||
@@ -33,7 +33,11 @@ feature -- Visitor
|
|||||||
indent
|
indent
|
||||||
indent
|
indent
|
||||||
append_content_tag_to ("title", Void, a_feed.title, buffer)
|
append_content_tag_to ("title", Void, a_feed.title, buffer)
|
||||||
append_content_tag_to ("description", Void, a_feed.description, buffer)
|
if attached a_feed.description as desc then
|
||||||
|
append_content_tag_to ("description", Void, desc, buffer)
|
||||||
|
else
|
||||||
|
append_content_tag_to ("description", Void, a_feed.title, buffer)
|
||||||
|
end
|
||||||
across
|
across
|
||||||
a_feed.links as tb
|
a_feed.links as tb
|
||||||
loop
|
loop
|
||||||
@@ -120,7 +124,7 @@ feature {NONE} -- Helpers
|
|||||||
htdate: HTTP_DATE
|
htdate: HTTP_DATE
|
||||||
do
|
do
|
||||||
create htdate.make_from_date_time (dt)
|
create htdate.make_from_date_time (dt)
|
||||||
Result := htdate.rfc850_string
|
Result := htdate.rfc1123_string
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -46,6 +46,8 @@ feature {NONE} -- Helpers
|
|||||||
indentation: STRING
|
indentation: STRING
|
||||||
|
|
||||||
append_content_tag_to (a_tagname: READABLE_STRING_8; a_attr: detachable ITERABLE [TUPLE [name: READABLE_STRING_8; value: detachable READABLE_STRING_GENERAL]]; a_content: detachable READABLE_STRING_GENERAL; a_output: STRING)
|
append_content_tag_to (a_tagname: READABLE_STRING_8; a_attr: detachable ITERABLE [TUPLE [name: READABLE_STRING_8; value: detachable READABLE_STRING_GENERAL]]; a_content: detachable READABLE_STRING_GENERAL; a_output: STRING)
|
||||||
|
local
|
||||||
|
l_is_xhtml_type: BOOLEAN
|
||||||
do
|
do
|
||||||
if a_content /= Void or a_attr /= Void then
|
if a_content /= Void or a_attr /= Void then
|
||||||
a_output.append (indentation)
|
a_output.append (indentation)
|
||||||
@@ -60,8 +62,11 @@ feature {NONE} -- Helpers
|
|||||||
a_output.append (ic.item.name)
|
a_output.append (ic.item.name)
|
||||||
a_output.append_character ('=')
|
a_output.append_character ('=')
|
||||||
a_output.append_character ('%"')
|
a_output.append_character ('%"')
|
||||||
a_output.append (escaped_unicode_xml (l_att_value.as_string_32))
|
a_output.append (escaped_xml (l_att_value))
|
||||||
a_output.append_character ('%"')
|
a_output.append_character ('%"')
|
||||||
|
if ic.item.name.same_string ("type") and then l_att_value.same_string ("xhtml") then
|
||||||
|
l_is_xhtml_type := True
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -69,7 +74,13 @@ feature {NONE} -- Helpers
|
|||||||
a_output.append ("/>%N")
|
a_output.append ("/>%N")
|
||||||
else
|
else
|
||||||
a_output.append (">")
|
a_output.append (">")
|
||||||
a_output.append (escaped_unicode_xml (a_content.as_string_32))
|
if l_is_xhtml_type then
|
||||||
|
a_output.append ("<div xmlns=%"http://www.w3.org/1999/xhtml%">")
|
||||||
|
a_output.append (escaped_xml (a_content))
|
||||||
|
a_output.append ("</div>")
|
||||||
|
else
|
||||||
|
a_output.append (escaped_xml (a_content))
|
||||||
|
end
|
||||||
a_output.append ("</" + a_tagname + ">%N")
|
a_output.append ("</" + a_tagname + ">%N")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -89,7 +100,7 @@ feature {NONE} -- Helpers
|
|||||||
a_output.append (ic.item.name)
|
a_output.append (ic.item.name)
|
||||||
a_output.append_character ('=')
|
a_output.append_character ('=')
|
||||||
a_output.append_character ('%"')
|
a_output.append_character ('%"')
|
||||||
a_output.append (escaped_unicode_xml (ic.item.value))
|
a_output.append (escaped_xml (ic.item.value))
|
||||||
a_output.append_character ('%"')
|
a_output.append_character ('%"')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ feature -- Access
|
|||||||
if attached xml_attribute_text (x_link, "href") as l_href and then
|
if attached xml_attribute_text (x_link, "href") as l_href and then
|
||||||
l_href.is_valid_as_string_8
|
l_href.is_valid_as_string_8
|
||||||
then
|
then
|
||||||
create lnk.make (l_href.as_string_8)
|
create lnk.make (l_href.to_string_8)
|
||||||
lnk.set_relation (xml_attribute_text (x_link, "rel"))
|
lnk.set_relation (xml_attribute_text (x_link, "rel"))
|
||||||
lnk.set_type (xml_attribute_text (x_link, "type"))
|
lnk.set_type (xml_attribute_text (x_link, "type"))
|
||||||
Result.force (lnk)
|
Result.force (lnk)
|
||||||
|
|||||||
Reference in New Issue
Block a user