For now with basic implementation. It will be improved later Added SEO related attribute in CMS_RESPONSE. Added improved Contact module. Added basic SEO module.
120 lines
2.2 KiB
Plaintext
120 lines
2.2 KiB
Plaintext
note
|
|
description: "[
|
|
String expander facility for the CMS.
|
|
]"
|
|
date: "$Date$"
|
|
revision: "$Revision$"
|
|
|
|
class
|
|
CMS_STRING_EXPANDER [G -> STRING_GENERAL]
|
|
|
|
create
|
|
make
|
|
|
|
feature {NONE} -- Initialization
|
|
|
|
make
|
|
do
|
|
create values.make (3)
|
|
end
|
|
|
|
feature -- Access
|
|
|
|
values: STRING_TABLE [G]
|
|
|
|
has_error: BOOLEAN
|
|
do
|
|
Result := attached error_handler as h and then h.has_error
|
|
end
|
|
|
|
feature -- Element change
|
|
|
|
force, put (new: G; key: READABLE_STRING_GENERAL)
|
|
do
|
|
values.force (new, key)
|
|
end
|
|
|
|
feature -- Conversion
|
|
|
|
expand_string (a_text: STRING_GENERAL)
|
|
do
|
|
if attached {STRING_32} a_text as t32 then
|
|
expand_string_32 (t32)
|
|
elseif attached {STRING_8} a_text as t8 then
|
|
expand_string_8 (t8)
|
|
else
|
|
check known_string: False end
|
|
end
|
|
end
|
|
|
|
expand_string_8 (a_text: STRING)
|
|
local
|
|
k, s: STRING_8
|
|
utf: UTF_CONVERTER
|
|
do
|
|
--| FIXME: implement better string expander.
|
|
across
|
|
values as ic
|
|
loop
|
|
if attached {READABLE_STRING_8} ic.item as v then
|
|
s := v.to_string_8
|
|
elseif attached ic.item as v then
|
|
s := utf.utf_32_string_to_utf_8_string_8 (v)
|
|
else
|
|
create s.make_empty
|
|
end
|
|
if attached {READABLE_STRING_8} ic.key as v then
|
|
k := v
|
|
else
|
|
k := utf.utf_32_string_to_utf_8_string_8 (ic.key)
|
|
end
|
|
a_text.replace_substring_all ({STRING_8} "$" + k, s)
|
|
end
|
|
end
|
|
|
|
expand_string_32 (a_text: STRING_32)
|
|
local
|
|
k, s: STRING_32
|
|
do
|
|
--| FIXME: implement better string expander.
|
|
across
|
|
values as ic
|
|
loop
|
|
if attached ic.item as v then
|
|
s := v.to_string_32
|
|
else
|
|
create s.make_empty
|
|
end
|
|
k := ic.key.to_string_32
|
|
a_text.replace_substring_all ({STRING_32} "$" + k, s)
|
|
end
|
|
end
|
|
|
|
feature {NONE} -- Implementation
|
|
|
|
reset_error
|
|
do
|
|
if attached error_handler as h then
|
|
h.reset
|
|
end
|
|
end
|
|
|
|
error_handler: detachable ERROR_HANDLER
|
|
|
|
report_error (m: detachable READABLE_STRING_GENERAL)
|
|
local
|
|
h: like error_handler
|
|
do
|
|
h := error_handler
|
|
if h = Void then
|
|
create h.make
|
|
error_handler := h
|
|
end
|
|
h.add_custom_error (-1, "string expander error", m)
|
|
end
|
|
|
|
;note
|
|
copyright: "2011-2016, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
|
|
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
|
end
|