Updated code regarding to string 32 vs string 8.

This commit is contained in:
Jocelyn Fiat
2017-04-14 11:45:38 +02:00
parent a530bbebb4
commit 3b8261ff08
31 changed files with 163 additions and 147 deletions

View File

@@ -54,7 +54,7 @@ feature -- Execution
if attached {WSF_STRING} req.item ("user") as u then if attached {WSF_STRING} req.item ("user") as u then
--| If yes, say hello world #name --| If yes, say hello world #name
l_user_name := (create {HTML_ENCODER}).decoded_string (u.value.to_string_8) l_user_name := (create {HTML_ENCODER}).general_decoded_string (u.value)
s := "<p>Hello " + mesg.html_encoded_string (l_user_name) + "!</p>" s := "<p>Hello " + mesg.html_encoded_string (l_user_name) + "!</p>"
s.append ("Display a <a href=%"/users/" + u.url_encoded_value + "/message/%">message</a></p>") s.append ("Display a <a href=%"/users/" + u.url_encoded_value + "/message/%">message</a></p>")

View File

@@ -86,7 +86,7 @@ feature -- Access
html_decoded_string (v: READABLE_STRING_32): READABLE_STRING_32 html_decoded_string (v: READABLE_STRING_32): READABLE_STRING_32
do do
if v.is_valid_as_string_8 then if v.is_valid_as_string_8 then
Result := (create {HTML_ENCODER}).decoded_string (v.to_string_8) Result := (create {HTML_ENCODER}).general_decoded_string (v)
else else
Result := v Result := v
end end

View File

@@ -54,7 +54,7 @@ feature {NONE} -- Initialization
create date_time.make_from_epoch (n.as_integer_32) create date_time.make_from_epoch (n.as_integer_32)
end end
make_from_string (s: READABLE_STRING_8) make_from_string (s: READABLE_STRING_GENERAL)
-- Create from string representation `s' -- Create from string representation `s'
-- Supports: RFC 1123 and RFC 850 -- Supports: RFC 1123 and RFC 850
-- Tolerant with: GMT+offset and GMT-offset -- Tolerant with: GMT+offset and GMT-offset
@@ -350,7 +350,7 @@ feature -- Helper routines.
feature {NONE} -- Implementation feature {NONE} -- Implementation
string_to_date_time (s: READABLE_STRING_8): detachable DATE_TIME string_to_date_time (s: READABLE_STRING_GENERAL): detachable DATE_TIME
-- String representation of `dt' using the RFC 1123 -- String representation of `dt' using the RFC 1123
-- HTTP-date = rfc1123-date | rfc850-date | asctime-date -- HTTP-date = rfc1123-date | rfc850-date | asctime-date
-- rfc1123-date = wkday "," SP date1 SP time SP "GMT" -- rfc1123-date = wkday "," SP date1 SP time SP "GMT"
@@ -377,8 +377,8 @@ feature {NONE} -- Implementation
note note
EIS: "name=RFC2616", "protocol=URI", "src=http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html" EIS: "name=RFC2616", "protocol=URI", "src=http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html"
local local
t: STRING_8 t: STRING_32
l_ddd, l_mmm: detachable STRING_8 l_ddd, l_mmm: detachable STRING_32
l_dd, l_yyyy, l_hh, l_mi, l_ss, l_ff2: INTEGER l_dd, l_yyyy, l_hh, l_mi, l_ss, l_ff2: INTEGER
l_mo: INTEGER l_mo: INTEGER
l_gmt_offset: INTEGER -- minutes l_gmt_offset: INTEGER -- minutes
@@ -622,7 +622,7 @@ feature {NONE} -- Implementation
end end
end end
ansi_c_string_to_date_time (s: READABLE_STRING_8): detachable DATE_TIME ansi_c_string_to_date_time (s: READABLE_STRING_GENERAL): detachable DATE_TIME
-- String representation of `dt' using the RFC 1123 -- String representation of `dt' using the RFC 1123
-- asctime-date = wkday SP date3 SP time SP 4DIGIT -- asctime-date = wkday SP date3 SP time SP 4DIGIT
-- date3 = month SP ( 2DIGIT | ( SP 1DIGIT )) -- date3 = month SP ( 2DIGIT | ( SP 1DIGIT ))
@@ -638,8 +638,8 @@ feature {NONE} -- Implementation
note note
EIS: "name=RFC2616", "protocol=URI", "src=http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html" EIS: "name=RFC2616", "protocol=URI", "src=http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html"
local local
t: STRING_8 t: STRING_32
l_ddd, l_mmm: detachable STRING_8 l_ddd, l_mmm: detachable STRING_32
l_dd, l_yyyy, l_hh, l_mi, l_ss, l_ff2: INTEGER l_dd, l_yyyy, l_hh, l_mi, l_ss, l_ff2: INTEGER
l_mo: INTEGER l_mo: INTEGER
l_gmt_offset: INTEGER -- minutes l_gmt_offset: INTEGER -- minutes
@@ -681,18 +681,18 @@ feature {NONE} -- Implementation
-- Tolerant to full month name .. -- Tolerant to full month name ..
l_mmm.keep_head (3) l_mmm.keep_head (3)
end end
if l_mmm.same_string ("JAN") then l_mo := 01 if l_mmm.same_string_general ("JAN") then l_mo := 01
elseif l_mmm.same_string ("FEB") then l_mo := 02 elseif l_mmm.same_string_general ("FEB") then l_mo := 02
elseif l_mmm.same_string ("MAR") then l_mo := 03 elseif l_mmm.same_string_general ("MAR") then l_mo := 03
elseif l_mmm.same_string ("APR") then l_mo := 04 elseif l_mmm.same_string_general ("APR") then l_mo := 04
elseif l_mmm.same_string ("MAY") then l_mo := 05 elseif l_mmm.same_string_general ("MAY") then l_mo := 05
elseif l_mmm.same_string ("JUN") then l_mo := 06 elseif l_mmm.same_string_general ("JUN") then l_mo := 06
elseif l_mmm.same_string ("JUL") then l_mo := 07 elseif l_mmm.same_string_general ("JUL") then l_mo := 07
elseif l_mmm.same_string ("AUG") then l_mo := 08 elseif l_mmm.same_string_general ("AUG") then l_mo := 08
elseif l_mmm.same_string ("SEP") then l_mo := 09 elseif l_mmm.same_string_general ("SEP") then l_mo := 09
elseif l_mmm.same_string ("OCT") then l_mo := 10 elseif l_mmm.same_string_general ("OCT") then l_mo := 10
elseif l_mmm.same_string ("NOV") then l_mo := 11 elseif l_mmm.same_string_general ("NOV") then l_mo := 11
elseif l_mmm.same_string ("DEC") then l_mo := 12 elseif l_mmm.same_string_general ("DEC") then l_mo := 12
else err := True else err := True
end end
else else
@@ -875,7 +875,7 @@ feature {NONE} -- Implementation
invariant invariant
note note
copyright: "2011-2015, Jocelyn Fiat, Eiffel Software and others" copyright: "2011-2017, Jocelyn Fiat, Eiffel Software and others"
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
source: "[ source: "[
Eiffel Software Eiffel Software

View File

@@ -47,7 +47,7 @@ feature -- Change
across across
ax_to_sreg_map as c ax_to_sreg_map as c
loop loop
ask_info (c.key.to_string_32, is_required) ask_info (c.key, is_required)
end end
end end
@@ -204,18 +204,18 @@ feature {OPENID_CONSUMER_VALIDATION} -- Implementation
l_types as t l_types as t
loop loop
s := xml_content (t.item) s := xml_content (t.item)
if s.same_string ("http://openid.net/sreg/1.0") then if s.same_string_general ("http://openid.net/sreg/1.0") then
r_sreg_supported := True r_sreg_supported := True
elseif s.same_string ("http://openid.net/extensions/sreg/1.1") then elseif s.same_string_general ("http://openid.net/extensions/sreg/1.1") then
r_sreg_supported := True r_sreg_supported := True
elseif s.same_string ("http://openid.net/srv/ax/1.0") then elseif s.same_string_general ("http://openid.net/srv/ax/1.0") then
r_ax_supported := True r_ax_supported := True
elseif s.same_string ("http://specs.openid.net/auth/2.0/signon") then elseif s.same_string_general ("http://specs.openid.net/auth/2.0/signon") then
r_version := 2 r_version := 2
elseif s.same_string ("http://specs.openid.net/auth/2.0/server") then elseif s.same_string_general ("http://specs.openid.net/auth/2.0/server") then
r_version := 2 r_version := 2
r_identifier_select := True r_identifier_select := True
elseif s.same_string ("http://openid.net/signon/1.1") then elseif s.same_string_general ("http://openid.net/signon/1.1") then
r_version := 1 r_version := 1
end end
end end
@@ -494,14 +494,14 @@ feature {NONE} -- Implementation
feature -- Helper feature -- Helper
xml_content (e: XML_ELEMENT): STRING_8 xml_content (e: XML_ELEMENT): STRING_32
do do
create Result.make_empty create Result.make_empty
if attached e.contents as lst then if attached e.contents as lst then
across across
lst as c lst as c
loop loop
Result.append (c.item.content.to_string_8) Result.append (c.item.content)
end end
end end
end end

View File

@@ -89,9 +89,9 @@ feature -- Basic operation
create ret.make_from_string (return_url) create ret.make_from_string (return_url)
create tb.make (5) create tb.make (5)
if attached values as q_lst then if attached values as q_lst then
if attached item_by_name ("openid.claimed_id", q_lst) as q_claimed_id then if attached item_by_name ("openid.claimed_id", q_lst) as q_claimed_id and then q_claimed_id.is_valid_as_string_8 then
l_claimed_id := q_claimed_id.as_string_8 l_claimed_id := q_claimed_id.to_string_8
elseif attached item_by_name ("openid.identity", q_lst) as l_id then elseif attached item_by_name ("openid.identity", q_lst) as l_id and then l_id.is_valid_as_string_8 then
l_claimed_id := l_id.to_string_8 l_claimed_id := l_id.to_string_8
end end
identity := l_claimed_id identity := l_claimed_id
@@ -117,7 +117,7 @@ feature -- Basic operation
if if
attached item_by_name ("openid.return_to", q_lst) as q_return_to and then attached item_by_name ("openid.return_to", q_lst) as q_return_to and then
not return_url.same_string (q_return_to.to_string_8) not return_url.same_string_general (q_return_to)
then then
-- The return_to url must match the url of current request. -- The return_to url must match the url of current request.
-- I'm assuing that noone will set the returnUrl to something that doesn't make sense. -- I'm assuing that noone will set the returnUrl to something that doesn't make sense.
@@ -217,7 +217,7 @@ feature -- Basic operation
if s.same_string ({STRING_32} "ns.ax") and v.same_string ({STRING_32} "http://openid.net/srv/ax/1.0") then if s.same_string ({STRING_32} "ns.ax") and v.same_string ({STRING_32} "http://openid.net/srv/ax/1.0") then
l_alias := "ax." l_alias := "ax."
else else
if v.same_string ("http://openid.net/srv/ax/1.0") then if v.same_string_general ("http://openid.net/srv/ax/1.0") then
l_alias := s.substring (("ns.").count + 1, s.count).to_string_8 + "." l_alias := s.substring (("ns.").count + 1, s.count).to_string_8 + "."
end end
end end
@@ -235,8 +235,8 @@ feature -- Basic operation
loop loop
s := c.item s := c.item
if if
s.starts_with (k_value.to_string_32) s.starts_with_general (k_value)
or s.starts_with (k_type.to_string_32) or s.starts_with_general (k_type)
then then
ax_keys.force ("openid." + s) ax_keys.force ("openid." + s)
end end
@@ -251,17 +251,17 @@ feature -- Basic operation
loop loop
s := c.item s := c.item
if attached item_by_name (s, lst) as v then if attached item_by_name (s, lst) as v then
if s.starts_with (k_value.to_string_32) then if s.starts_with_general (k_value) then
k := s.substring (k_value.count + 1, s.count) k := s.substring (k_value.count + 1, s.count)
i := k.index_of ('.', 1) i := k.index_of ('.', 1)
if i > 1 then if i > 1 then
k.keep_head (i - 1) k.keep_head (i - 1)
end end
if attached item_by_name (k_type + k, lst) as l_type then if attached item_by_name (k_type + k, lst) as l_type then
if l_type.starts_with ("http://axschema.org/") then if l_type.starts_with_general ("http://axschema.org/") then
check ("http://axschema.org/").count = 20 end check ("http://axschema.org/").count = 20 end
attributes.force (v, l_type.substring (21, l_type.count)) attributes.force (v, l_type.substring (21, l_type.count))
elseif l_type.starts_with ("http://schema.openid.net/") then elseif l_type.starts_with_general ("http://schema.openid.net/") then
check ("http://schema.openid.net/").count = 25 end check ("http://schema.openid.net/").count = 25 end
attributes.force (v, l_type.substring (26, l_type.count)) attributes.force (v, l_type.substring (26, l_type.count))
else else

View File

@@ -137,7 +137,7 @@ feature -- Status report
-- String that should be displayed in debugger to represent `Current'. -- String that should be displayed in debugger to represent `Current'.
do do
create Result.make_empty create Result.make_empty
Result.append (type.to_string_32) Result.append_string_general (type)
Result.append (" ") Result.append (" ")
if attached login as l_login then if attached login as l_login then
Result.append ("login=[") Result.append ("login=[")

View File

@@ -94,7 +94,7 @@ feature {NONE} -- Implementation
require require
a_value_not_is_empty: a_value /= Void a_value_not_is_empty: a_value /= Void
do do
a_output.append (a_name.to_string_32) a_output.append_string_general (a_name)
a_output.append_character ('=') a_output.append_character ('=')
a_output.append_string_general (a_value) a_output.append_string_general (a_value)
a_output.append_character ('%N') a_output.append_character ('%N')
@@ -103,7 +103,7 @@ feature {NONE} -- Implementation
append_variable_to_debug_output (a_name: READABLE_STRING_8; a_value: detachable READABLE_STRING_GENERAL; a_output: STRING_32) append_variable_to_debug_output (a_name: READABLE_STRING_8; a_value: detachable READABLE_STRING_GENERAL; a_output: STRING_32)
do do
if a_value /= Void then if a_value /= Void then
a_output.append (a_name.to_string_32) a_output.append_string_general (a_name)
a_output.append_character ('=') a_output.append_character ('=')
a_output.append_string_general (a_value) a_output.append_string_general (a_value)
a_output.append_character ('%N') a_output.append_character ('%N')

View File

@@ -166,6 +166,7 @@ feature -- Basic Operation
if is_verbose then if is_verbose then
log ("%NReceive <====================", debug_level) log ("%NReceive <====================", debug_level)
if attached req.raw_header_data as rhd then if attached req.raw_header_data as rhd then
check raw_header_is_valid_as_string_8: rhd.is_valid_as_string_8 end
log (rhd.to_string_8, debug_level) log (rhd.to_string_8, debug_level)
end end
end end
@@ -189,6 +190,7 @@ feature -- Basic Operation
end end
-- Sending the server's opening handshake -- Sending the server's opening handshake
create l_sha1.make create l_sha1.make
check l_ws_key_is_valid_as_string_8: l_ws_key.is_valid_as_string_8 end
l_sha1.update_from_string (l_ws_key.to_string_8 + magic_guid) l_sha1.update_from_string (l_ws_key.to_string_8 + magic_guid)
l_key := Base64_encoder.encoded_string (digest (l_sha1)) l_key := Base64_encoder.encoded_string (digest (l_sha1))
res.header.add_header_key_value ("Upgrade", "websocket") res.header.add_header_key_value ("Upgrade", "websocket")

View File

@@ -101,15 +101,15 @@ feature -- Basic operations
-- also if-range when we add support for range requests -- also if-range when we add support for range requests
if not l_if_match.same_string ("*") then if not l_if_match.same_string ("*") then
l_etags := l_if_match.split (',') l_etags := l_if_match.split (',')
l_failed := not across l_etags as i_etags some a_handler.matching_etag (req, i_etags.item.to_string_32, True) end l_failed := not across l_etags as i_etags some a_handler.matching_etag (req, i_etags.item, True) end
end end
end end
if l_failed then if l_failed then
handle_precondition_failed (req, res) handle_precondition_failed (req, res)
else else
if attached req.http_if_unmodified_since as l_if_unmodified_since then if attached req.http_if_unmodified_since as l_if_unmodified_since then
if l_if_unmodified_since.is_string_8 then if l_if_unmodified_since.is_valid_as_string_8 then
create l_date.make_from_string (l_if_unmodified_since.as_string_8) create l_date.make_from_string (l_if_unmodified_since.to_string_8)
if not l_date.has_error then if not l_date.has_error then
if a_handler.modified_since (req, l_date.date_time) then if a_handler.modified_since (req, l_date.date_time) then
handle_precondition_failed (req, res) handle_precondition_failed (req, res)
@@ -122,14 +122,14 @@ feature -- Basic operations
if attached req.http_if_none_match as l_if_none_match then if attached req.http_if_none_match as l_if_none_match then
l_etags := l_if_none_match.split (',') l_etags := l_if_none_match.split (',')
l_failed := l_if_none_match.same_string ("*") or l_failed := l_if_none_match.same_string ("*") or
across l_etags as i_etags some a_handler.matching_etag (req, i_etags.item.to_string_32, False) end across l_etags as i_etags some a_handler.matching_etag (req, i_etags.item, False) end
end end
if l_failed then if l_failed then
handle_if_none_match_failed (req, res, a_handler) handle_if_none_match_failed (req, res, a_handler)
else else
if attached req.http_if_modified_since as l_if_modified_since then if attached req.http_if_modified_since as l_if_modified_since then
if l_if_modified_since.is_string_8 then if l_if_modified_since.is_valid_as_string_8 then
create l_date.make_from_string (l_if_modified_since.as_string_8) create l_date.make_from_string (l_if_modified_since.to_string_8)
if not l_date.has_error then if not l_date.has_error then
if not a_handler.modified_since (req, l_date.date_time) then if not a_handler.modified_since (req, l_date.date_time) then
handle_not_modified (req, res, a_handler) handle_not_modified (req, res, a_handler)
@@ -408,7 +408,7 @@ feature -- Error reporting
if req.is_content_type_accepted ({HTTP_MIME_TYPES}.text_html) then if req.is_content_type_accepted ({HTTP_MIME_TYPES}.text_html) then
s := "<html lang=%"en%"><head>" s := "<html lang=%"en%"><head>"
s.append ("<title>") s.append ("<title>")
s.append (html_encoder.encoded_string (req.request_uri.to_string_32)) s.append (html_encoder.general_encoded_string (req.request_uri))
s.append ("Error " + a_status_code.out + " (" + l_msg + ")") s.append ("Error " + a_status_code.out + " (" + l_msg + ")")
s.append ("</title>%N") s.append ("</title>%N")
s.append ("[ s.append ("[
@@ -434,7 +434,7 @@ feature -- Error reporting
s.append ("</div>") s.append ("</div>")
s.append ("The current location for this resource is <a href=%"" + a_locations.first.string + "%">here</a>") s.append ("The current location for this resource is <a href=%"" + a_locations.first.string + "%">here</a>")
s.append ("Error " + a_status_code.out + " (" + l_msg + ")</div>") s.append ("Error " + a_status_code.out + " (" + l_msg + ")</div>")
s.append ("<div id=%"message%">Error " + a_status_code.out + " (" + l_msg + "): <code>" + html_encoder.encoded_string (req.request_uri.to_string_32) + "</code></div>") s.append ("<div id=%"message%">Error " + a_status_code.out + " (" + l_msg + "): <code>" + html_encoder.general_encoded_string (req.request_uri) + "</code></div>")
s.append ("<div id=%"footer%"></div>") s.append ("<div id=%"footer%"></div>")
s.append ("</body>%N") s.append ("</body>%N")
s.append ("</html>%N") s.append ("</html>%N")

View File

@@ -158,7 +158,7 @@ feature -- Access
deferred deferred
end end
matching_etag (req: WSF_REQUEST; a_etag: READABLE_STRING_32; a_strong: BOOLEAN): BOOLEAN matching_etag (req: WSF_REQUEST; a_etag: READABLE_STRING_GENERAL; a_strong: BOOLEAN): BOOLEAN
-- Is `a_etag' a match for resource requested in `req'? -- Is `a_etag' a match for resource requested in `req'?
-- If `a_strong' then the strong comparison function must be used. -- If `a_strong' then the strong comparison function must be used.
require require

View File

@@ -147,7 +147,10 @@ feature {WSF_RESPONSE} -- Output
l_description.append ("</ul>") l_description.append ("</ul>")
end end
if doc_url_supported and then attached {WSF_STRING} request.query_parameter ("api") as l_api then if
doc_url_supported and then attached {WSF_STRING} request.query_parameter ("api") as l_api and then
l_api.value.is_valid_as_string_8
then
l_api_resource := l_api.value.to_string_8 l_api_resource := l_api.value.to_string_8
if l_api_resource.is_empty then if l_api_resource.is_empty then
l_api_resource := Void l_api_resource := Void

View File

@@ -187,9 +187,9 @@ feature -- Execution
execute (a_start_path: READABLE_STRING_8; req: WSF_REQUEST; res: WSF_RESPONSE) execute (a_start_path: READABLE_STRING_8; req: WSF_REQUEST; res: WSF_RESPONSE)
local local
p: STRING_32 p: STRING_8
do do
create p.make_from_string (req.path_info) create p.make_from_string (req.percent_encoded_path_info)
if p.starts_with_general (a_start_path) then if p.starts_with_general (a_start_path) then
p.remove_head (a_start_path.count) p.remove_head (a_start_path.count)
else else
@@ -203,7 +203,7 @@ feature -- Execution
execute (a_start_path, req, res) execute (a_start_path, req, res)
end end
process_uri (uri: READABLE_STRING_32; req: WSF_REQUEST; res: WSF_RESPONSE) process_uri (uri: READABLE_STRING_8; req: WSF_REQUEST; res: WSF_RESPONSE)
local local
f: RAW_FILE f: RAW_FILE
fn: like resource_filename fn: like resource_filename
@@ -214,7 +214,7 @@ feature -- Execution
if f.is_readable then if f.is_readable then
if f.is_directory then if f.is_directory then
if index_disabled then if index_disabled then
process_directory_index_disabled (uri.to_string_8, req, res) process_directory_index_disabled (uri, req, res)
else else
process_index (req.request_uri, fn, req, res) process_index (req.request_uri, fn, req, res)
end end
@@ -222,10 +222,10 @@ feature -- Execution
process_file (f, req, res) process_file (f, req, res)
end end
else else
process_access_denied (uri.to_string_8, req, res) process_access_denied (uri, req, res)
end end
else else
process_not_found (uri.to_string_8, req, res) process_not_found (uri, req, res)
end end
end end
@@ -344,7 +344,7 @@ feature -- Execution
do do
if if
attached req.meta_string_variable ("HTTP_IF_MODIFIED_SINCE") as s_if_modified_since and then attached req.meta_string_variable ("HTTP_IF_MODIFIED_SINCE") as s_if_modified_since and then
attached http_date_format_to_date (s_if_modified_since.to_string_8) as l_if_modified_since_date and then attached http_date_format_to_date (s_if_modified_since) as l_if_modified_since_date and then
attached file_date (f) as f_date and then attached file_date (f) as f_date and then
f_date <= l_if_modified_since_date f_date <= l_if_modified_since_date
then then
@@ -497,7 +497,7 @@ feature {NONE} -- Implementation
end end
end end
resource_filename (uri: READABLE_STRING_32): PATH resource_filename (uri: READABLE_STRING_GENERAL): PATH
local local
s: like uri_path_to_filename s: like uri_path_to_filename
do do
@@ -544,7 +544,7 @@ feature {NONE} -- Implementation
end end
end end
uri_path_to_filename (fn: READABLE_STRING_32): STRING_32 uri_path_to_filename (fn: READABLE_STRING_GENERAL): STRING_32
-- Real filename from url-path `fn' -- Real filename from url-path `fn'
--| Find a better design for this piece of code --| Find a better design for this piece of code
--| Eventually in a spec/$ISE_PLATFORM/ specific cluster --| Eventually in a spec/$ISE_PLATFORM/ specific cluster
@@ -552,7 +552,7 @@ feature {NONE} -- Implementation
n: INTEGER n: INTEGER
do do
n := fn.count n := fn.count
create Result.make_from_string (fn) create Result.make_from_string_general (fn)
if n > 0 and then Result.item (Result.count) = {CHARACTER_32} '/' then if n > 0 and then Result.item (Result.count) = {CHARACTER_32} '/' then
Result.remove_tail (1) Result.remove_tail (1)
n := n - 1 n := n - 1
@@ -595,7 +595,7 @@ feature {NONE} -- implementation: date time
Result := timestamp_to_date (f.date) Result := timestamp_to_date (f.date)
end end
http_date_format_to_date (s: READABLE_STRING_8): detachable DATE_TIME http_date_format_to_date (s: READABLE_STRING_GENERAL): detachable DATE_TIME
-- String representation of `dt' using the RFC 1123 -- String representation of `dt' using the RFC 1123
-- HTTP-date = rfc1123-date | rfc850-date | asctime-date -- HTTP-date = rfc1123-date | rfc850-date | asctime-date
-- rfc1123-date = wkday "," SP date1 SP time SP "GMT" -- rfc1123-date = wkday "," SP date1 SP time SP "GMT"

View File

@@ -45,7 +45,7 @@ feature -- Status report
across across
mtds as c mtds as c
loop loop
s.append_string (c.item.to_string_32) s.append_string_general (c.item)
s.append_string (" ") s.append_string (" ")
end end
s.append_string ("]") s.append_string ("]")

View File

@@ -32,7 +32,11 @@ feature {NONE} -- Initialization
elseif attached {WSF_STRING} req.query_parameter (cookie_name) as q_uuid then elseif attached {WSF_STRING} req.query_parameter (cookie_name) as q_uuid then
l_uuid := q_uuid.value l_uuid := q_uuid.value
end end
if l_uuid /= Void and then session_exists (l_uuid.to_string_8) then if
l_uuid /= Void and then
l_uuid.is_valid_as_string_8 and then
session_exists (l_uuid)
then
uuid := l_uuid.to_string_8 uuid := l_uuid.to_string_8
load load
else else
@@ -128,7 +132,7 @@ feature {NONE} -- Storage
manager: WSF_SESSION_MANAGER manager: WSF_SESSION_MANAGER
session_exists (a_uuid: like uuid): BOOLEAN session_exists (a_uuid: READABLE_STRING_GENERAL): BOOLEAN
do do
Result := manager.session_exists (a_uuid) Result := manager.session_exists (a_uuid)
end end

View File

@@ -30,7 +30,7 @@ feature {NONE} -- Initialization
feature -- Access feature -- Access
session_exists (a_session_uuid: READABLE_STRING_8): BOOLEAN session_exists (a_session_uuid: READABLE_STRING_GENERAL): BOOLEAN
local local
f: RAW_FILE f: RAW_FILE
do do
@@ -38,7 +38,7 @@ feature -- Access
Result := f.exists and then f.is_readable Result := f.exists and then f.is_readable
end end
session_data (a_session_uuid: READABLE_STRING_8): detachable WSF_SESSION_DATA session_data (a_session_uuid: READABLE_STRING_GENERAL): detachable WSF_SESSION_DATA
local local
f: RAW_FILE f: RAW_FILE
do do
@@ -153,7 +153,7 @@ feature {NONE} -- Implementation
end end
note note
copyright: "2011-2014, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others" copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
source: "[ source: "[
Eiffel Software Eiffel Software

View File

@@ -9,11 +9,11 @@ deferred class
feature -- Access feature -- Access
session_exists (a_uuid: READABLE_STRING_8): BOOLEAN session_exists (a_uuid: READABLE_STRING_GENERAL): BOOLEAN
deferred deferred
end end
session_data (a_uuid: READABLE_STRING_8): detachable WSF_SESSION_DATA session_data (a_uuid: READABLE_STRING_GENERAL): detachable WSF_SESSION_DATA
deferred deferred
end end
@@ -28,7 +28,7 @@ feature -- Persistence
end end
note note
copyright: "2011-2014, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others" copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
source: "[ source: "[
Eiffel Software Eiffel Software

View File

@@ -52,14 +52,14 @@ feature -- Status report
feature -- Query feature -- Query
string_representation: STRING_32 string_representation: READABLE_STRING_32
-- String representation of Current -- String representation of Current
-- if possible -- if possible
do do
if attached value as v then if attached value as v then
Result := v.generating_type.name_32 Result := generating_type.name_32
else else
Result := "Void" Result := {STRING_32} "Void"
end end
end end

View File

@@ -126,17 +126,10 @@ feature -- Helper
Result := value.same_string_general (a_other) Result := value.same_string_general (a_other)
end end
is_case_insensitive_equal (a_other: READABLE_STRING_8): BOOLEAN is_case_insensitive_equal (a_other: READABLE_STRING_GENERAL): BOOLEAN
-- Does `a_other' represent the same case insensitive string as `Current'? -- Does `a_other' represent the same case insensitive string as `Current'?
local
v: like value
do do
v := value Result := value.is_case_insensitive_equal_general (a_other)
if v = a_other.to_string_32 then
Result := True
elseif v.is_valid_as_string_8 then
Result := v.is_case_insensitive_equal (a_other.to_string_32)
end
end end
feature -- Conversion feature -- Conversion

View File

@@ -130,7 +130,7 @@ feature -- Conversion
end end
as_array_of_string: detachable ARRAY [READABLE_STRING_32] as_array_of_string: detachable ARRAY [READABLE_STRING_32]
-- Return an array of STRING if possible., otherwise Void -- Return an array of STRING if possible, otherwise Void.
local local
i,n: INTEGER i,n: INTEGER
nb: INTEGER nb: INTEGER
@@ -145,6 +145,10 @@ feature -- Conversion
if attached {WSF_STRING} value (i.out) as s then if attached {WSF_STRING} value (i.out) as s then
Result.put (s.value, i) Result.put (s.value, i)
nb := nb + 1 nb := nb + 1
elseif attached {WSF_STRING} value (name + "[" + i.out + "]") as s then
-- FIXME !!
Result.put (s.value, i)
nb := nb + 1
else else
Result := Void Result := Void
end end

View File

@@ -94,7 +94,7 @@ feature -- Status report
feature -- Conversion feature -- Conversion
string_representation: STRING_32 string_representation: READABLE_STRING_32
do do
Result := filename Result := filename
end end
@@ -250,7 +250,7 @@ feature -- Element change
end end
note note
copyright: "2011-2015, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others" copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
source: "[ source: "[
Eiffel Software Eiffel Software

View File

@@ -70,7 +70,7 @@ feature -- Query
end end
end end
string_representation: STRING_32 string_representation: READABLE_STRING_32
-- String representation of Current -- String representation of Current
-- if possible -- if possible
-- note: unicode value. -- note: unicode value.
@@ -89,7 +89,7 @@ feature -- Helper
result_true_only_for_string: Result implies is_string result_true_only_for_string: Result implies is_string
end end
is_case_insensitive_equal (a_other: READABLE_STRING_8): BOOLEAN is_case_insensitive_equal (a_other: READABLE_STRING_GENERAL): BOOLEAN
-- Does `a_other' represent the same case insensitive string as `Current'? -- Does `a_other' represent the same case insensitive string as `Current'?
do do
if is_string then if is_string then
@@ -130,7 +130,7 @@ feature -- Visitor
end end
note note
copyright: "2011-2015, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others" copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
source: "[ source: "[
Eiffel Software Eiffel Software

View File

@@ -125,13 +125,13 @@ feature {NONE} -- Implementation
l_is_hidden := l_doc_mapping.documentation (i.request_methods).is_hidden l_is_hidden := l_doc_mapping.documentation (i.request_methods).is_hidden
end end
if not l_is_hidden then if not l_is_hidden then
create s.make_from_string (i.mapping.associated_resource.to_string_32) create s.make_from_string_general (i.mapping.associated_resource)
if attached i.request_methods as mtds then if attached i.request_methods as mtds then
s.append (" [ ") s.append (" [ ")
across across
mtds as mtds_c mtds as mtds_c
loop loop
s.append (mtds_c.item.to_string_32) s.append_string_general (mtds_c.item)
s.append_character (' ') s.append_character (' ')
end end
s.append ("]") s.append ("]")
@@ -169,7 +169,7 @@ feature {NONE} -- Implementation
end end
if not l_is_hidden then if not l_is_hidden then
ok := True ok := True
create s.make_from_string (i.mapping.associated_resource.to_string_32) create s.make_from_string_general (i.mapping.associated_resource)
if attached i.request_methods as mtds then if attached i.request_methods as mtds then
ok := False ok := False
s.append (" [ ") s.append (" [ ")
@@ -179,7 +179,7 @@ feature {NONE} -- Implementation
if m = Void or else m.is_case_insensitive_equal (c.item) then if m = Void or else m.is_case_insensitive_equal (c.item) then
ok := True ok := True
end end
s.append (c.item.to_string_32) s.append_string_general (c.item)
s.append_character (' ') s.append_character (' ')
end end
s.append ("]") s.append ("]")

View File

@@ -130,7 +130,7 @@ feature {WSF_RESPONSE} -- Output
if request.is_content_type_accepted ({HTTP_MIME_TYPES}.text_html) then if request.is_content_type_accepted ({HTTP_MIME_TYPES}.text_html) then
s := "<html lang=%"en%"><head>" s := "<html lang=%"en%"><head>"
s.append ("<title>") s.append ("<title>")
s.append (html_encoder.encoded_string (request.request_uri.to_string_32)) s.append (html_encoder.general_encoded_string (request.request_uri))
s.append (l_html_error_code_text + "!!") s.append (l_html_error_code_text + "!!")
s.append ("</title>%N") s.append ("</title>%N")
s.append ( s.append (
@@ -160,7 +160,7 @@ feature {WSF_RESPONSE} -- Output
s.append (l_html_error_code_text + "</div>") s.append (l_html_error_code_text + "</div>")
s.append ("<div id=%"message%">" + l_html_error_code_text + ": the request method <code>") s.append ("<div id=%"message%">" + l_html_error_code_text + ": the request method <code>")
s.append (request.request_method) s.append (request.request_method)
s.append ("</code> is inappropriate for the URL for <code>" + html_encoder.encoded_string (request.request_uri.to_string_32) + "</code>.</div>") s.append ("</code> is inappropriate for the URL for <code>" + html_encoder.general_encoded_string (request.request_uri) + "</code>.</div>")
if attached suggested_methods as lst and then not lst.is_empty then if attached suggested_methods as lst and then not lst.is_empty then
s.append ("<div id=%"suggestions%"><strong>Allowed methods:</strong>") s.append ("<div id=%"suggestions%"><strong>Allowed methods:</strong>")
across across
@@ -186,17 +186,17 @@ feature {WSF_RESPONSE} -- Output
l_text := l_loc l_text := l_loc
end end
s.append ("<li>") s.append ("<li>")
s.append ("<a href=%"" + l_loc + "%">" + html_encoder.encoded_string (l_text.to_string_32) + "</a>") s.append ("<a href=%"" + l_loc + "%">" + html_encoder.general_encoded_string (l_text) + "</a>")
elseif l_text /= Void then elseif l_text /= Void then
s.append ("<li>") s.append ("<li>")
s.append (html_encoder.encoded_string (l_text.to_string_32)) s.append (html_encoder.general_encoded_string (l_text))
s.append ("</li>%N") s.append ("</li>%N")
end end
if (l_loc /= Void or l_text /= Void) then if (l_loc /= Void or l_text /= Void) then
if attached lst.item.description as l_desc then if attached lst.item.description as l_desc then
s.append ("<br/> - ") s.append ("<br/> - ")
s.append (html_encoder.encoded_string (l_desc.to_string_32)) s.append (html_encoder.general_encoded_string (l_desc))
s.append ("%N") s.append ("%N")
end end
s.append ("</li>%N") s.append ("</li>%N")
@@ -221,7 +221,7 @@ feature {WSF_RESPONSE} -- Output
else else
s := l_html_error_code_text + ": the request method " s := l_html_error_code_text + ": the request method "
s.append (request.request_method) s.append (request.request_method)
s.append (" is inappropriate for the URL for '" + html_encoder.encoded_string (request.request_uri.to_string_32) + "'.%N") s.append (" is inappropriate for the URL for '" + html_encoder.general_encoded_string (request.request_uri) + "'.%N")
if attached suggested_methods as lst and then not lst.is_empty then if attached suggested_methods as lst and then not lst.is_empty then
s.append ("Allowed methods:") s.append ("Allowed methods:")
across across

View File

@@ -61,7 +61,7 @@ feature {WSF_RESPONSE} -- Output
if request.is_content_type_accepted ({HTTP_MIME_TYPES}.text_html) then if request.is_content_type_accepted ({HTTP_MIME_TYPES}.text_html) then
s := "<html lang=%"en%"><head>" s := "<html lang=%"en%"><head>"
s.append ("<title>") s.append ("<title>")
s.append (html_encoder.encoded_string (request.request_uri.to_string_32)) s.append (html_encoder.general_encoded_string (request.request_uri))
s.append ("Error 412 (Precondition Failed)") s.append ("Error 412 (Precondition Failed)")
s.append ("</title>%N") s.append ("</title>%N")
s.append ("[ s.append ("[
@@ -84,7 +84,7 @@ feature {WSF_RESPONSE} -- Output
s.append ("<div class=%"inner2%"></div>") s.append ("<div class=%"inner2%"></div>")
s.append ("</div>") s.append ("</div>")
s.append ("Error 412 (Precondition Failed)</div>") s.append ("Error 412 (Precondition Failed)</div>")
s.append ("<div id=%"message%">Error 412 (Precondition Failed): <code>" + html_encoder.encoded_string (request.request_uri.to_string_32) + "</code></div>") s.append ("<div id=%"message%">Error 412 (Precondition Failed): <code>" + html_encoder.general_encoded_string (request.request_uri) + "</code></div>")
if attached body as b then if attached body as b then
s.append ("<div>") s.append ("<div>")
s.append (b) s.append (b)

View File

@@ -346,7 +346,7 @@ feature -- Helper
is_request_method (m: READABLE_STRING_GENERAL): BOOLEAN is_request_method (m: READABLE_STRING_GENERAL): BOOLEAN
-- Is `m' the Current request_method? -- Is `m' the Current request_method?
do do
Result := request_method.is_case_insensitive_equal (m.as_string_8) Result := m.is_case_insensitive_equal (request_method)
end end
is_put_request_method: BOOLEAN is_put_request_method: BOOLEAN
@@ -691,7 +691,7 @@ feature -- Access: CGI Meta variables
do do
meta_variables_table.force (new_string_value (a_name, a_value), a_name) meta_variables_table.force (new_string_value (a_name, a_value), a_name)
ensure ensure
param_set: attached {WSF_STRING} meta_variable (a_name) as val and then val.url_encoded_value.same_string (a_value.to_string_8) param_set: attached {WSF_STRING} meta_variable (a_name) as val and then a_value.same_string_general (val.url_encoded_value)
end end
unset_meta_variable (a_name: READABLE_STRING_GENERAL) unset_meta_variable (a_name: READABLE_STRING_GENERAL)

View File

@@ -38,11 +38,11 @@ feature -- Element change
v: READABLE_STRING_8 v: READABLE_STRING_8
do do
if a_text /= Void then if a_text /= Void then
v := html_encoded_string (a_text.to_string_32) v := html_encoded_string (a_text)
across across
options as o options as o
loop loop
if o.item.is_same_value (v.to_string_32) then if o.item.is_same_value (v) then
l_found := True l_found := True
o.item.set_is_selected (True) o.item.set_is_selected (True)
else else
@@ -50,7 +50,7 @@ feature -- Element change
end end
end end
if not l_found then if not l_found then
create opt.make (v.to_string_32, Void) create opt.make (v, Void)
opt.set_is_selected (True) opt.set_is_selected (True)
add_option (opt) add_option (opt)
end end
@@ -69,7 +69,7 @@ feature -- Element change
v: READABLE_STRING_8 v: READABLE_STRING_8
do do
if a_text /= Void then if a_text /= Void then
v := html_encoded_string (a_text.to_string_32) v := html_encoded_string (a_text)
across across
options as o options as o
loop loop

View File

@@ -10,17 +10,19 @@ class
inherit inherit
WSF_FORM_SELECTABLE_ITEM WSF_FORM_SELECTABLE_ITEM
SHARED_HTML_ENCODER
create create
make make
feature {NONE} -- Initialization feature {NONE} -- Initialization
make (a_value: like value; a_text: detachable like text) make (a_value: READABLE_STRING_GENERAL; a_text: detachable like text)
-- Initialize `Current'. -- Initialize `Current'.
do do
value := a_value value := a_value.as_string_32
if a_text = Void then if a_text = Void then
text := a_value.to_string_8 text := html_encoder.general_encoded_string (a_value)
else else
text := a_text text := a_text
end end
@@ -30,9 +32,9 @@ feature -- Status
is_selected: BOOLEAN is_selected: BOOLEAN
is_same_value (v: READABLE_STRING_32): BOOLEAN is_same_value (v: READABLE_STRING_GENERAL): BOOLEAN
do do
Result := value.same_string (v) Result := value.same_string_general (v)
end end
is_same_text (v: like text): BOOLEAN is_same_text (v: like text): BOOLEAN

View File

@@ -12,7 +12,7 @@ feature -- Status report
deferred deferred
end end
is_same_value (v: READABLE_STRING_32): BOOLEAN is_same_value (v: READABLE_STRING_GENERAL): BOOLEAN
deferred deferred
end end

View File

@@ -9,9 +9,9 @@ class
feature -- Converter feature -- Converter
html_encoded_string (s: READABLE_STRING_32): READABLE_STRING_8 html_encoded_string (s: READABLE_STRING_GENERAL): READABLE_STRING_8
do do
Result := html_encoder.encoded_string (s) Result := html_encoder.general_encoded_string (s)
end end
html_encoder: HTML_ENCODER html_encoder: HTML_ENCODER

View File

@@ -16,27 +16,27 @@ feature -- Access
-- indicate that the form shouldnt be validated when submitted. -- indicate that the form shouldnt be validated when submitted.
-- it's only applicable to input type=submit or image. -- it's only applicable to input type=submit or image.
formaction: detachable READABLE_STRING_32 formaction: detachable READABLE_STRING_8
-- formaction specifies the file or application that will submit the form. -- formaction specifies the file or application that will submit the form.
-- It has the same effect as the action attribute on the form element and -- It has the same effect as the action attribute on the form element and
-- can only be used with a submit or image button (type="submit" or type="image"). -- can only be used with a submit or image button (type="submit" or type="image").
-- When the form is submitted, the browser first checks for a formaction attribute; -- When the form is submitted, the browser first checks for a formaction attribute;
-- if that isnt present, it proceeds to look for an action attribute on the form. -- if that isnt present, it proceeds to look for an action attribute on the form.
formenctype: detachable READABLE_STRING_32 formenctype: detachable READABLE_STRING_8
-- formenctype details how the form data is encoded with the POST method type. -- formenctype details how the form data is encoded with the POST method type.
-- It has the same effect as the enctype attribute on the form element and -- It has the same effect as the enctype attribute on the form element and
-- can only be used with a submit or image button (type="submit" or type="image"). -- can only be used with a submit or image button (type="submit" or type="image").
-- The default value if not included is application/x-www-formurlencoded. -- The default value if not included is application/x-www-formurlencoded.
--! At the moment the value is not validated. --! At the moment the value is not validated.
formmethod: detachable READABLE_STRING_32 formmethod: detachable READABLE_STRING_8
-- formmethod specifies which HTTP method (GET, POST, PUT, DELETE) will be used to submit the form data. -- formmethod specifies which HTTP method (GET, POST, PUT, DELETE) will be used to submit the form data.
-- It has the same effect as the method attribute on the form element and can only be used with a -- It has the same effect as the method attribute on the form element and can only be used with a
-- submit or image button (type="submit" or type="image"). -- submit or image button (type="submit" or type="image").
--!At the moment the value is not validated. --!At the moment the value is not validated.
formtarget: detachable READABLE_STRING_32 formtarget: detachable READABLE_STRING_8
-- formtarget specifies the target window for the form results. -- formtarget specifies the target window for the form results.
-- It has the same effect as the target attribute on the form element and can only be used with a submit or image button (type="submit" or type="image"). -- It has the same effect as the target attribute on the form element and can only be used with a submit or image button (type="submit" or type="image").
@@ -60,39 +60,47 @@ feature -- Element Change
formnovalidate_false: not formnovalidate formnovalidate_false: not formnovalidate
end end
set_formaction (a_action: READABLE_STRING_32) set_formaction (a_action: READABLE_STRING_GENERAL)
-- Set `formaction' with `a_action'. -- Set `formaction' with `a_action'.
-- Example:<input type="submit" value="Submit" formaction="/users"> -- Example:<input type="submit" value="Submit" formaction="/users">
require
is_valid_as_string_8: a_action.is_valid_as_string_8
do do
formaction := a_action formaction := a_action.to_string_8
ensure ensure
formaction_set: attached formaction as l_action implies l_action = a_action formaction_set: attached formaction as l_action implies l_action = a_action
end end
set_formenctype (a_enctype: READABLE_STRING_32) set_formenctype (a_enctype: READABLE_STRING_GENERAL)
-- Set `formenctype' with `a_enctype'. -- Set `formenctype' with `a_enctype'.
-- Example: <input type="submit" value="Submit" formenctype="application/x-www-form-urlencoded"> -- Example: <input type="submit" value="Submit" formenctype="application/x-www-form-urlencoded">
require
is_valid_as_string_8: a_enctype.is_valid_as_string_8
do do
formenctype := a_enctype formenctype := a_enctype.to_string_8
ensure ensure
formenctype_set: attached formenctype as l_enctype implies l_enctype = a_enctype formenctype_set: attached formenctype as l_enctype implies l_enctype = a_enctype
end end
set_formmethod (a_method: READABLE_STRING_32) set_formmethod (a_method: READABLE_STRING_GENERAL)
-- Set `formmethod' with `a_method'. -- Set `formmethod' with `a_method'.
-- Example: <input type="submit" value="Submit" formmethod="POST"> -- Example: <input type="submit" value="Submit" formmethod="POST">
--! require is_valid_method: [PUT, POST, DELETE, GET, ...] --! require is_valid_method: [PUT, POST, DELETE, GET, ...]
require
is_valid_as_string_8: a_method.is_valid_as_string_8
do do
formmethod := a_method formmethod := a_method.to_string_8
ensure ensure
formmethod_set: attached formmethod as l_method implies l_method = a_method formmethod_set: attached formmethod as l_method implies l_method = a_method
end end
set_formtarget (a_target: READABLE_STRING_32) set_formtarget (a_target: READABLE_STRING_GENERAL)
-- Set `formtarget' with `a_target'. -- Set `formtarget' with `a_target'.
-- Example: <input type="submit" value="Submit" formtarget="_self"> -- Example: <input type="submit" value="Submit" formtarget="_self">
require
is_valid_as_string_8: a_target.is_valid_as_string_8
do do
formtarget := a_target formtarget := a_target.to_string_8
ensure ensure
formtarget_set: attached formtarget as l_target implies l_target = a_target formtarget_set: attached formtarget as l_target implies l_target = a_target
end end
@@ -110,26 +118,26 @@ feature {NONE} -- Conversion
--formaction --formaction
if attached formaction as l_formaction then if attached formaction as l_formaction then
a_target.append (" formaction=%"") a_target.append (" formaction=%"")
a_target.append (l_formaction.to_string_8) a_target.append (l_formaction)
a_target.append_character ('%"') a_target.append_character ('%"')
end end
--formenctype --formenctype
if attached formenctype as l_enctype then if attached formenctype as l_enctype then
a_target.append (" formenctype=%"") a_target.append (" formenctype=%"")
a_target.append (l_enctype.to_string_8) a_target.append (l_enctype)
a_target.append_character ('%"') a_target.append_character ('%"')
end end
-- formmethod -- formmethod
if attached formmethod as l_method then if attached formmethod as l_method then
a_target.append (" formmethod=%"") a_target.append (" formmethod=%"")
a_target.append (l_method.to_string_8) a_target.append (l_method)
a_target.append_character ('%"') a_target.append_character ('%"')
end end
-- formmethod -- formmethod
if attached formtarget as l_target then if attached formtarget as l_target then
a_target.append (" formtarget=%"") a_target.append (" formtarget=%"")
a_target.append (l_target.to_string_8) a_target.append (l_target)
a_target.append_character ('%"') a_target.append_character ('%"')
end end
end end

View File

@@ -34,21 +34,21 @@ def set_last_run_CI_tests_failed(m):
f.close() f.close()
def report_failure(msg, a_code=2): def report_failure(msg, a_code=2):
print msg print (msg)
set_last_run_CI_tests_failed(msg) set_last_run_CI_tests_failed(msg)
sys.exit(a_code) sys.exit(a_code)
# Override system command. # Override system command.
# run command. if not successful, complain and exit with error # run command. if not successful, complain and exit with error
def eval_cmd(cmd): def eval_cmd(cmd):
# print cmd # print (cmd)
res = subprocess.call (cmd, shell=True) res = subprocess.call (cmd, shell=True)
if res != 0: if res != 0:
report_failure ("Failed running: %s (returncode=%s)" % (cmd, res), 2) report_failure ("Failed running: %s (returncode=%s)" % (cmd, res), 2)
return res return res
def eval_cmd_output(cmd, ignore_error=False): def eval_cmd_output(cmd, ignore_error=False):
# print cmd # print (cmd)
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
if p: if p:
o = p.communicate()[0] o = p.communicate()[0]
@@ -80,17 +80,17 @@ def runTestForProject(where):
# clobber = (len(sys.argv) >= 2 and sys.argv[1] == "-clobber") or (last_build_had_failure()) # clobber = (len(sys.argv) >= 2 and sys.argv[1] == "-clobber") or (last_build_had_failure())
if clobber: if clobber:
reset_last_run_CI_tests_failed() reset_last_run_CI_tests_failed()
print "## Cleaning previous tests" print ("## Cleaning previous tests")
rm_dir("EIFGENs") rm_dir("EIFGENs")
# compile the restbucks # compile the restbucks
print "# Compiling restbucks example" print ("# Compiling restbucks example")
cmd = "ecb -config %s -target restbucks -batch -c_compile -project_path . " % (os.path.join ("examples", "restbucksCRUD", "restbucks-safe.ecf")) cmd = "ecb -config %s -target restbucks -batch -c_compile -project_path . " % (os.path.join ("examples", "rest", "restbucks_CRUD", "restbucks.ecf"))
res = eval_cmd(cmd) res = eval_cmd(cmd)
sleep(1) sleep(1)
print "# check compile_all tests" print ("# check compile_all tests")
if not os.path.exists(os.path.join ("tests", "temp")): if not os.path.exists(os.path.join ("tests", "temp")):
os.makedirs (os.path.join ("tests", "temp")) os.makedirs (os.path.join ("tests", "temp"))
@@ -102,12 +102,12 @@ def runTestForProject(where):
cmd = "%s -keep passed" % (cmd) # forget about failed one .. we'll try again next time cmd = "%s -keep passed" % (cmd) # forget about failed one .. we'll try again next time
if clobber: if clobber:
cmd = "%s -clean" % (cmd) cmd = "%s -clean" % (cmd)
print "command: %s" % (cmd) print ("command: %s" % (cmd))
(res, res_output) = eval_cmd_output(cmd) (res, res_output) = eval_cmd_output(cmd)
if res != 0: if res != 0:
report_failure("compile_all failed", 2) report_failure("compile_all failed", 2)
print "# Analyze check_compilations results" print ("# Analyze check_compilations results")
lines = re.split ("\n", res_output) lines = re.split ("\n", res_output)
regexp = "^(\S+)\s+(\S+)\s+from\s+(\S+)\s+\(([^\)]+)\)\.\.\.(\S+)$" regexp = "^(\S+)\s+(\S+)\s+from\s+(\S+)\s+\(([^\)]+)\)\.\.\.(\S+)$"
p = re.compile (regexp); p = re.compile (regexp);
@@ -122,14 +122,14 @@ def runTestForProject(where):
else: else:
non_failures.append ({"name": p_res.group(2), "target": p_res.group(3), "ecf": p_res.group(4), "result": p_res.group(5)}) non_failures.append ({"name": p_res.group(2), "target": p_res.group(3), "ecf": p_res.group(4), "result": p_res.group(5)})
for non_fails in non_failures: for non_fails in non_failures:
print "[%s] %s : %s @ %s" % (non_fails["result"], non_fails["name"], non_fails["ecf"], non_fails["target"]) print ("[%s] %s : %s @ %s" % (non_fails["result"], non_fails["name"], non_fails["ecf"], non_fails["target"]))
for fails in failures: for fails in failures:
print "[FAILURE] %s : %s @ %s" % (fails["name"], fails["ecf"], fails["target"]) print ("[FAILURE] %s : %s @ %s" % (fails["name"], fails["ecf"], fails["target"]))
sleep(1) sleep(1)
if len(failures) > 0: if len(failures) > 0:
report_failure ("Failure(s) occurred", 2) report_failure ("Failure(s) occurred", 2)
print "# End..." print ("# End...")
if __name__ == '__main__': if __name__ == '__main__':
runTestForProject(os.path.join (os.getcwd(), '..')) runTestForProject(os.path.join (os.getcwd(), '..'))