Added HTTP_DATE.append_to...string conversion feature
Made HTTP_DATE.append_...to...string more flexible by acception STRING_GENERAL,
so it is possible to append to STRING_32 (further more, it avoid potential implicit conversion)
This commit is contained in:
@@ -158,60 +158,128 @@ feature -- Conversion to string
|
|||||||
append_date_time_to_ansi_c_string (date_time, Result)
|
append_date_time_to_ansi_c_string (date_time, Result)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
feature -- Conversion into string
|
||||||
|
|
||||||
|
append_to_yyyy_mmm_dd_string (s: STRING_GENERAL)
|
||||||
|
local
|
||||||
|
dt: DATE_TIME
|
||||||
|
do
|
||||||
|
dt := date_time
|
||||||
|
append_integer_to (dt.year, s) -- yyyy
|
||||||
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
|
append_month_mmm_to (dt.month, s) -- mmm
|
||||||
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
|
append_2_digits_integer_to (dt.day, s) -- dd
|
||||||
|
end
|
||||||
|
|
||||||
|
append_to_rfc1123_string (s: STRING_GENERAL)
|
||||||
|
local
|
||||||
|
dt: DATE_TIME
|
||||||
|
do
|
||||||
|
dt := date_time
|
||||||
|
append_day_ddd_to (dt.date.day_of_the_week, s) -- ddd
|
||||||
|
s.append_code (44) -- 44 ',' -- ','
|
||||||
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
|
append_2_digits_integer_to (dt.day, s) -- dd
|
||||||
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
|
append_month_mmm_to (dt.month, s) -- mmm
|
||||||
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
|
append_integer_to (dt.year, s) -- YYYY
|
||||||
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
|
append_2_digits_time_to (dt.time, s) -- hh:mi:ss
|
||||||
|
s.append (" GMT") -- SPace + GMT
|
||||||
|
end
|
||||||
|
|
||||||
|
append_rfc850_string (s: STRING_GENERAL)
|
||||||
|
local
|
||||||
|
dt: DATE_TIME
|
||||||
|
do
|
||||||
|
dt := date_time
|
||||||
|
append_day_name_to (dt.date.day_of_the_week, s) -- mmm
|
||||||
|
s.append_code (44) -- 44 ',' -- ','
|
||||||
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
|
append_2_digits_integer_to (dt.day, s) -- dd
|
||||||
|
s.append_code (45) -- 45 '-' -- '-'
|
||||||
|
append_month_mmm_to (dt.month, s) -- mmm
|
||||||
|
s.append_code (45) -- 45 '-' -- '-'
|
||||||
|
append_integer_to (dt.year \\ 100, s) -- yy
|
||||||
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
|
append_2_digits_time_to (dt.time, s) -- hh:mi:ss
|
||||||
|
s.append (" GMT") -- SPace + GMT
|
||||||
|
end
|
||||||
|
|
||||||
|
append_to_ansi_c_string (s: STRING_GENERAL)
|
||||||
|
--| Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
|
||||||
|
local
|
||||||
|
dt: DATE_TIME
|
||||||
|
do
|
||||||
|
dt := date_time
|
||||||
|
append_day_ddd_to (dt.date.day_of_the_week, s) -- ddd
|
||||||
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
|
append_month_mmm_to (dt.month, s) -- mmm
|
||||||
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
|
append_integer_to (dt.day, s) -- d
|
||||||
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
|
append_2_digits_time_to (dt.time, s) -- hh:mi:ss
|
||||||
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
|
append_integer_to (dt.year, s) -- yyyy
|
||||||
|
end
|
||||||
|
|
||||||
feature -- Conversion into string
|
feature -- Conversion into string
|
||||||
|
|
||||||
append_date_time_to_yyyy_mmm_dd_string (dt: DATE_TIME; s: STRING)
|
append_date_time_to_yyyy_mmm_dd_string (dt: DATE_TIME; s: STRING_GENERAL)
|
||||||
do
|
do
|
||||||
s.append_integer (dt.year) -- yyyy
|
append_integer_to (dt.year, s) -- yyyy
|
||||||
s.append_character (' ') -- ' '
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
append_month_mmm_to (dt.month, s) -- mmm
|
append_month_mmm_to (dt.month, s) -- mmm
|
||||||
s.append_character (' ') -- ' '
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
append_2_digits_integer_to (dt.day, s) -- dd
|
append_2_digits_integer_to (dt.day, s) -- dd
|
||||||
end
|
end
|
||||||
|
|
||||||
append_date_time_to_rfc1123_string (dt: DATE_TIME; s: STRING)
|
append_date_time_to_rfc1123_string (dt: DATE_TIME; s: STRING_GENERAL)
|
||||||
do
|
do
|
||||||
append_day_ddd_to (dt.date.day_of_the_week, s) -- ddd
|
append_day_ddd_to (dt.date.day_of_the_week, s) -- ddd
|
||||||
s.append_character (',') -- ','
|
s.append_code (44) -- 44 ',' -- ','
|
||||||
s.append_character (' ') -- SPace
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
append_2_digits_integer_to (dt.day, s) -- dd
|
append_2_digits_integer_to (dt.day, s) -- dd
|
||||||
s.append_character (' ') -- SPace
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
append_month_mmm_to (dt.month, s) -- mmm
|
append_month_mmm_to (dt.month, s) -- mmm
|
||||||
s.append_character (' ') -- SPace
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
s.append_integer (dt.year) -- yyyy
|
append_integer_to (dt.year, s) -- yyyy
|
||||||
s.append_character (' ') -- SPace
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
append_2_digits_time_to (dt.time, s) -- hh:mi:ss
|
append_2_digits_time_to (dt.time, s) -- hh:mi:ss
|
||||||
s.append (" GMT") -- SPace + GMT
|
s.append (" GMT") -- SPace + GMT
|
||||||
end
|
end
|
||||||
|
|
||||||
append_date_time_to_rfc850_string (dt: DATE_TIME; s: STRING)
|
append_date_time_to_rfc850_string (dt: DATE_TIME; s: STRING_GENERAL)
|
||||||
do
|
do
|
||||||
append_day_name_to (dt.date.day_of_the_week, s) -- mmm
|
append_day_name_to (dt.date.day_of_the_week, s) -- mmm
|
||||||
s.append_character (',') -- ,
|
s.append_code (44) -- 44 ',' -- ','
|
||||||
s.append_character (' ') -- SPace
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
append_2_digits_integer_to (dt.day, s) -- dd
|
append_2_digits_integer_to (dt.day, s) -- dd
|
||||||
s.append_character ('-') -- '-'
|
s.append_code (45) -- 45 '-' -- '-'
|
||||||
append_month_mmm_to (dt.month, s) -- mmm
|
append_month_mmm_to (dt.month, s) -- mmm
|
||||||
s.append_character ('-') -- '-'
|
s.append_code (45) -- 45 '-' -- '-'
|
||||||
s.append_integer (dt.year \\ 100) -- yy
|
append_integer_to (dt.year \\ 100, s) -- yy
|
||||||
s.append_character (' ') -- SPace
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
append_2_digits_time_to (dt.time, s) -- hh:mi:ss
|
append_2_digits_time_to (dt.time, s) -- hh:mi:ss
|
||||||
s.append (" GMT") -- SPace + GMT
|
s.append (" GMT") -- SPace + GMT
|
||||||
end
|
end
|
||||||
|
|
||||||
append_date_time_to_ansi_c_string (dt: DATE_TIME; s: STRING)
|
append_date_time_to_ansi_c_string (dt: DATE_TIME; s: STRING_GENERAL)
|
||||||
--| Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
|
--| Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
|
||||||
do
|
do
|
||||||
append_day_ddd_to (dt.date.day_of_the_week, s) -- ddd
|
append_day_ddd_to (dt.date.day_of_the_week, s) -- ddd
|
||||||
s.append_character (' ') -- SP
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
append_month_mmm_to (dt.month, s) -- mmm
|
append_month_mmm_to (dt.month, s) -- mmm
|
||||||
s.append_character (' ') -- SPace
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
s.append_character (' ') -- SPace
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
s.append_integer (dt.day) -- d
|
append_integer_to (dt.day, s) -- d
|
||||||
s.append_character (' ') -- SPace
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
append_2_digits_time_to (dt.time, s) -- hh:mi:ss
|
append_2_digits_time_to (dt.time, s) -- hh:mi:ss
|
||||||
s.append_character (' ') -- SPace
|
s.append_code (32) -- 32 ' ' -- SPace
|
||||||
s.append_integer (dt.year) -- yyyy
|
append_integer_to (dt.year, s) -- yyyy
|
||||||
end
|
end
|
||||||
|
|
||||||
feature -- Status report
|
feature -- Status report
|
||||||
@@ -228,26 +296,26 @@ feature -- Status report
|
|||||||
|
|
||||||
feature {NONE} -- Implementation
|
feature {NONE} -- Implementation
|
||||||
|
|
||||||
append_2_digits_integer_to (i: INTEGER; s: STRING)
|
append_2_digits_integer_to (i: INTEGER; s: STRING_GENERAL)
|
||||||
require
|
require
|
||||||
is_not_negative: i >= 0
|
is_not_negative: i >= 0
|
||||||
do
|
do
|
||||||
if i <= 9 then
|
if i <= 9 then
|
||||||
s.append_character ('0')
|
s.append_code (48) -- 48 '0'
|
||||||
end
|
end
|
||||||
s.append_integer (i)
|
append_integer_to (i, s)
|
||||||
end
|
end
|
||||||
|
|
||||||
append_2_digits_time_to (t: TIME; s: STRING)
|
append_2_digits_time_to (t: TIME; s: STRING_GENERAL)
|
||||||
do
|
do
|
||||||
append_2_digits_integer_to (t.hour, s) -- hh
|
append_2_digits_integer_to (t.hour, s) -- hh
|
||||||
s.append_character (':') -- :
|
s.append_code (58) -- 58 ':' -- :
|
||||||
append_2_digits_integer_to (t.minute, s) -- mi
|
append_2_digits_integer_to (t.minute, s) -- mi
|
||||||
s.append_character (':') -- :
|
s.append_code (58) -- 58 ':' -- :
|
||||||
append_2_digits_integer_to (t.second, s) -- ss
|
append_2_digits_integer_to (t.second, s) -- ss
|
||||||
end
|
end
|
||||||
|
|
||||||
append_day_ddd_to (d: INTEGER; s: STRING)
|
append_day_ddd_to (d: INTEGER; s: STRING_GENERAL)
|
||||||
require
|
require
|
||||||
1 <= d and d <= 7
|
1 <= d and d <= 7
|
||||||
do
|
do
|
||||||
@@ -264,7 +332,7 @@ feature {NONE} -- Implementation
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
append_day_name_to (d: INTEGER; s: STRING)
|
append_day_name_to (d: INTEGER; s: STRING_GENERAL)
|
||||||
require
|
require
|
||||||
1 <= d and d <= 7
|
1 <= d and d <= 7
|
||||||
do
|
do
|
||||||
@@ -281,7 +349,7 @@ feature {NONE} -- Implementation
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
append_month_mmm_to (m: INTEGER; s: STRING)
|
append_month_mmm_to (m: INTEGER; s: STRING_GENERAL)
|
||||||
require
|
require
|
||||||
1 <= m and m <= 12
|
1 <= m and m <= 12
|
||||||
do
|
do
|
||||||
@@ -303,6 +371,17 @@ feature {NONE} -- Implementation
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
append_integer_to (i: INTEGER; s: STRING_GENERAL)
|
||||||
|
do
|
||||||
|
if attached {STRING_32} s as s32 then
|
||||||
|
s32.append_integer (i)
|
||||||
|
elseif attached {STRING_8} s as s8 then
|
||||||
|
s8.append_integer (i)
|
||||||
|
else
|
||||||
|
s.append (i.out)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
feature {NONE} -- Implementation
|
feature {NONE} -- Implementation
|
||||||
|
|
||||||
string_to_date_time (s: READABLE_STRING_8): detachable DATE_TIME
|
string_to_date_time (s: READABLE_STRING_8): detachable DATE_TIME
|
||||||
|
|||||||
Reference in New Issue
Block a user