Added FEED sorting routine. Added FEED_ITEM.link: detachable FEED_LINK that represents the main feed link. Comments.
87 lines
2.2 KiB
Plaintext
87 lines
2.2 KiB
Plaintext
note
|
|
description: "Helpers routine for feed library."
|
|
date: "$Date$"
|
|
revision: "$Revision$"
|
|
|
|
class
|
|
FEED_HELPERS
|
|
|
|
feature -- Helpers
|
|
|
|
date_time (a_date_string: READABLE_STRING_32): DATE_TIME
|
|
-- "2015-08-14T10:34:13.493740Z"
|
|
-- "Sat, 07 Sep 2002 00:00:01 GMT"
|
|
local
|
|
i,j: INTEGER
|
|
s: READABLE_STRING_GENERAL
|
|
y,m,d,h,min: INTEGER
|
|
sec: REAL_64
|
|
htdate: HTTP_DATE
|
|
str: STRING_32
|
|
do
|
|
if a_date_string.count > 0 and then a_date_string.item (1).is_digit then
|
|
i := a_date_string.index_of ('-', 1)
|
|
if i > 0 then
|
|
s := a_date_string.substring (1, i - 1)
|
|
y := s.to_integer_32 -- Year
|
|
j := i + 1
|
|
i := a_date_string.index_of ('-', j)
|
|
if i > 0 then
|
|
s := a_date_string.substring (j, i - 1)
|
|
m := s.to_integer_32 -- Month
|
|
j := i + 1
|
|
i := a_date_string.index_of ('T', j)
|
|
if i = 0 then
|
|
i := a_date_string.index_of (' ', j)
|
|
end
|
|
if i = 0 then
|
|
i := a_date_string.count + 1
|
|
end
|
|
if i > 0 then
|
|
s := a_date_string.substring (j, i - 1)
|
|
if s.is_integer then
|
|
d := s.to_integer_32 -- Day
|
|
j := i + 1
|
|
i := a_date_string.index_of (':', j)
|
|
if i > 0 then
|
|
s := a_date_string.substring (j, i - 1)
|
|
h := s.to_integer
|
|
j := i + 1
|
|
i := a_date_string.index_of (':', j)
|
|
if i > 0 then
|
|
s := a_date_string.substring (j, i - 1)
|
|
min := s.to_integer
|
|
j := i + 1
|
|
i := a_date_string.index_of ('Z', j)
|
|
if i = 0 then
|
|
i := a_date_string.count + 1
|
|
end
|
|
s := a_date_string.substring (j, i - 1)
|
|
sec := s.to_double
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
create Result.make (y,m,d,h,m,0)
|
|
Result.fine_second_add (sec)
|
|
else
|
|
i := a_date_string.index_of ('+', 1)
|
|
if i > 0 then
|
|
str := a_date_string.substring (1, i - 1)
|
|
str.append (" GMT")
|
|
create htdate.make_from_string (str)
|
|
Result := htdate.date_time
|
|
if a_date_string.substring (i + 1, a_date_string.count).is_case_insensitive_equal ("0000") then
|
|
|
|
end
|
|
else
|
|
create htdate.make_from_string (a_date_string)
|
|
Result := htdate.date_time
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|