Updated CMS_HOOK_BLOCK, to provide a better block_identifiers (CMS_RESPONSE): detachable ITERABLE [READABLE_STRING_8] query, to be implemented by CMS_HOOK_RESPONSE_BLOCK descendants.
Added CONFIG_READER.table_keys: detachable LIST [READABLE_STRING_32].
This commit is contained in:
@@ -34,7 +34,7 @@ feature -- Query
|
||||
end
|
||||
|
||||
resolved_text_list_item (k: READABLE_STRING_GENERAL): detachable LIST [READABLE_STRING_32]
|
||||
-- List of String item associated with key `k',
|
||||
-- List of String items associated with key `k',
|
||||
-- and expanded values to resolved variables ${varname}.
|
||||
do
|
||||
if attached text_list_item (k) as lst then
|
||||
@@ -50,7 +50,7 @@ feature -- Query
|
||||
end
|
||||
|
||||
resolved_text_table_item (k: READABLE_STRING_GENERAL): detachable STRING_TABLE [READABLE_STRING_32]
|
||||
-- Table of String item associated with key `k',
|
||||
-- Table of String items associated with key `k',
|
||||
-- and expanded values to resolved variables ${varname}.
|
||||
do
|
||||
if attached text_table_item (k) as tb then
|
||||
@@ -71,12 +71,17 @@ feature -- Query
|
||||
end
|
||||
|
||||
text_list_item (k: READABLE_STRING_GENERAL): detachable LIST [READABLE_STRING_32]
|
||||
-- List of String item associated with key `k'.
|
||||
-- List of String items associated with key `k'.
|
||||
deferred
|
||||
end
|
||||
|
||||
text_table_item (k: READABLE_STRING_GENERAL): detachable STRING_TABLE [READABLE_STRING_32]
|
||||
-- Table of String item associated with key `k'.
|
||||
-- Table of String items associated with key `k'.
|
||||
deferred
|
||||
end
|
||||
|
||||
table_keys (k: READABLE_STRING_GENERAL): detachable LIST [READABLE_STRING_32]
|
||||
-- Keys of table associated with key `k'.
|
||||
deferred
|
||||
end
|
||||
|
||||
|
||||
@@ -163,6 +163,20 @@ feature -- Access: Config Reader
|
||||
end
|
||||
end
|
||||
|
||||
table_keys (k: READABLE_STRING_GENERAL): detachable LIST [READABLE_STRING_32]
|
||||
-- <Precursor>
|
||||
do
|
||||
if attached {STRING_TABLE [like item]} item (k) as l_list then
|
||||
create {ARRAYED_LIST [READABLE_STRING_32]} Result.make (l_list.count)
|
||||
Result.compare_objects
|
||||
across
|
||||
l_list as ic
|
||||
loop
|
||||
Result.force (ic.key.as_string_32)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
integer_item (k: READABLE_STRING_GENERAL): INTEGER
|
||||
-- Integer item associated with key `k'.
|
||||
do
|
||||
@@ -442,12 +456,12 @@ feature {NONE} -- Implementation
|
||||
j := k.index_of (']', i + 1)
|
||||
if j = i + 1 then -- ends_with "[]"
|
||||
k.keep_head (i - 1)
|
||||
if
|
||||
if
|
||||
a_section_prefix /= Void and then
|
||||
attached {LIST [STRING_8]} items.item (a_section_prefix + {STRING_32} "." + k) as l_list
|
||||
then
|
||||
lst := l_list
|
||||
elseif
|
||||
elseif
|
||||
attached last_section_name as l_section_prefix and then
|
||||
attached {LIST [STRING_8]} items.item (l_section_prefix + {STRING_32} "." + k) as l_list
|
||||
then
|
||||
@@ -466,12 +480,12 @@ feature {NONE} -- Implementation
|
||||
sk.left_adjust
|
||||
sk.right_adjust
|
||||
k.keep_head (i - 1)
|
||||
if
|
||||
if
|
||||
a_section_prefix /= Void and then
|
||||
attached {STRING_TABLE [STRING_8]} items.item (a_section_prefix + {STRING_32} "." + k) as l_table
|
||||
then
|
||||
tb := l_table
|
||||
elseif
|
||||
elseif
|
||||
attached last_section_name as l_section_prefix and then
|
||||
attached {STRING_TABLE [STRING_8]} items.item (l_section_prefix + {STRING_32} "." + k) as l_table
|
||||
then
|
||||
@@ -522,7 +536,7 @@ feature {NONE} -- Implementation
|
||||
invariant
|
||||
|
||||
note
|
||||
copyright: "2011-2015, Jocelyn Fiat, Eiffel Software and others"
|
||||
copyright: "2011-2016, Jocelyn Fiat, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -105,6 +105,20 @@ feature -- Access: Config Reader
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
table_keys (k: READABLE_STRING_GENERAL): detachable LIST [READABLE_STRING_32]
|
||||
-- <Precursor>
|
||||
do
|
||||
if attached {JSON_OBJECT} item (k) as obj then
|
||||
create {ARRAYED_LIST [READABLE_STRING_32]} Result.make (obj.count)
|
||||
Result.compare_objects
|
||||
across
|
||||
obj as ic
|
||||
loop
|
||||
Result.force (ic.key.item)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
integer_item (k: READABLE_STRING_GENERAL): INTEGER
|
||||
-- Integer item associated with key `k'.
|
||||
|
||||
@@ -75,13 +75,21 @@ feature -- Test
|
||||
lst.has ("a") and lst.has ("b") and lst.has ("c") and lst.has ("1") and lst.has ("2") and lst.has ("3")
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
assert ("has_item (table)", cfg.has_item ("table"))
|
||||
assert ("item (table)", attached cfg.text_table_item ("table") as tb and then (
|
||||
tb.item ("a") ~ {STRING_32} "1" and
|
||||
tb.item ("b") ~ {STRING_32} "2" and
|
||||
tb.item ("c") ~ {STRING_32} "3" and
|
||||
tb.item ("d") ~ {STRING_32} "test"
|
||||
tb.item ("a") ~ {STRING_32} "1" and
|
||||
tb.item ("b") ~ {STRING_32} "2" and
|
||||
tb.item ("c") ~ {STRING_32} "3" and
|
||||
tb.item ("d") ~ {STRING_32} "test"
|
||||
)
|
||||
)
|
||||
|
||||
assert ("keys of (table)", attached cfg.table_keys ("table") as tb and then (
|
||||
tb.i_th (1) ~ {STRING_32} "a" and
|
||||
tb.i_th (2) ~ {STRING_32} "b" and
|
||||
tb.i_th (3) ~ {STRING_32} "c" and
|
||||
tb.i_th (4) ~ {STRING_32} "d"
|
||||
)
|
||||
)
|
||||
|
||||
@@ -198,13 +206,21 @@ feature -- Test
|
||||
lst.has ("a") and lst.has ("b") and lst.has ("c") and lst.has ("1") and lst.has ("2") and lst.has ("3")
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
assert ("has_item (table)", cfg.has_item ("table"))
|
||||
assert ("item (table)", attached cfg.text_table_item ("table") as tb and then (
|
||||
tb.item ("a") ~ {STRING_32} "1" and
|
||||
tb.item ("b") ~ {STRING_32} "2" and
|
||||
tb.item ("c") ~ {STRING_32} "3" and
|
||||
tb.item ("d") ~ {STRING_32} "test"
|
||||
tb.item ("a") ~ {STRING_32} "1" and
|
||||
tb.item ("b") ~ {STRING_32} "2" and
|
||||
tb.item ("c") ~ {STRING_32} "3" and
|
||||
tb.item ("d") ~ {STRING_32} "test"
|
||||
)
|
||||
)
|
||||
|
||||
assert ("keys of (table)", attached cfg.table_keys ("table") as tb and then (
|
||||
tb.i_th (1) ~ {STRING_32} "a" and
|
||||
tb.i_th (2) ~ {STRING_32} "b" and
|
||||
tb.i_th (3) ~ {STRING_32} "c" and
|
||||
tb.i_th (4) ~ {STRING_32} "d"
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user