Files
ROC/src/theme/cms_theme_information.e
2015-01-27 19:58:13 +01:00

136 lines
3.2 KiB
Plaintext

note
description: "Summary description for {CMS_THEME_INFORMATION}."
date: "$Date: 2014-11-13 16:23:47 +0100 (jeu., 13 nov. 2014) $"
revision: "$Revision: 96085 $"
class
CMS_THEME_INFORMATION
create
make,
make_default
feature {NONE} -- Initialization
make_default
do
engine := {STRING_32} "default"
create items.make_caseless (1)
create regions.make (5)
across
(<<"top","header", "highlighted","help", "content", "footer", "first_sidebar", "second_sidebar", "bottom">>) as ic
loop
regions.force (ic.item, ic.item)
end
end
make (fn: PATH)
local
f: PLAIN_TEXT_FILE
s: STRING_8
h,k: STRING_8
v: STRING_32
i: INTEGER
utf: UTF_CONVERTER
l_engine: detachable READABLE_STRING_32
done: BOOLEAN
do
make_default
create f.make_with_path (fn)
if f.exists and then f.is_access_readable then
f.open_read
from
until
done or f.exhausted or f.end_of_file
loop
f.read_line_thread_aware
s := f.last_string
s.left_adjust
if
s.is_empty
or else s.starts_with_general (";")
or else s.starts_with_general ("#")
or else s.starts_with_general ("--")
then
-- Ignore
else
i := s.index_of ('=', 1)
if i > 0 then
h := s.substring (1, i - 1)
h.left_adjust
h.right_adjust
if h.is_case_insensitive_equal_general ("engine") then
s.remove_head (i)
s.right_adjust
v := utf.utf_8_string_8_to_string_32 (s)
l_engine := v
elseif h.starts_with_general ("regions[") and h[h.count] = ']' then
s.remove_head (i)
s.right_adjust
v := utf.utf_8_string_8_to_string_32 (s)
i := h.index_of ('[', 1)
k := h.substring (i + 1, h.count - 1)
k.left_adjust
k.right_adjust
if k.starts_with_general ("-") then
--| If name is prefixed by "-"
--| remove the related region
--| If name is "-*", clear all regions.
if k.is_case_insensitive_equal_general ("-*") then
regions.wipe_out
else
k.remove_head (1)
regions.remove (k)
end
else
regions.force (v, k)
end
else
s.remove_head (i)
s.right_adjust
v := utf.utf_8_string_8_to_string_32 (s)
end
items.force (v, h)
end
end
end
f.close
end
if l_engine /= Void and then not l_engine.is_empty then
engine := l_engine
end
end
feature -- Access
engine: STRING_32
-- Template engine.
--| Could be: default, smarty, ...
regions: STRING_TABLE [READABLE_STRING_GENERAL]
-- Regions available in this theme
item (k: READABLE_STRING_GENERAL): detachable STRING_32
-- Item associated with name `k' if any.
do
Result := items[k]
end
items: STRING_TABLE [STRING_32]
-- Items indexed by key name.
invariant
engine_set: not engine.is_empty
note
copyright: "2011-2014, Jocelyn Fiat, Eiffel Software and others"
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
source: "[
Eiffel Software
5949 Hollister Ave., Goleta, CA 93117 USA
Telephone 805-685-1006, Fax 805-685-6869
Website http://www.eiffel.com
Customer support http://support.eiffel.com
]"
end