Ported r75 (all JSON value classes) from POC_CONVERTERS_FACTORY branch to trunk

This commit is contained in:
paul.cohen
2010-03-08 22:45:41 +00:00
parent 2710cae1da
commit a0e570226c
7 changed files with 500 additions and 405 deletions

View File

@@ -1,89 +1,108 @@
indexing
description:"[
A JSON_STRING represent a string in JSON.
A string is a collection of zero or more Unicodes characters, wrapped in double
quotes, using blackslash espaces.
]"
description:"[
A JSON_STRING represent a string in JSON.
A string is a collection of zero or more Unicodes characters, wrapped in double
quotes, using blackslash espaces.
]"
author: "Javier Velilla"
date: "2008/08/24"
revision: "Revision 0.1"
license:"MIT (see http://www.opensource.org/licenses/mit-license.php)"
author: "Javier Velilla"
date: "2008/08/24"
revision: "Revision 0.1"
license:"MIT (see http://www.opensource.org/licenses/mit-license.php)"
class
JSON_STRING
JSON_STRING
inherit
JSON_VALUE
redefine
is_equal
end
JSON_VALUE
redefine
is_equal
end
create
make_json
make_json
feature {NONE} -- Initialization
make_json (an_item: STRING) is
-- Initialize.
require
item_not_void: an_item /= Void
do
item := an_item
end
make_json (an_item: STRING) is
-- Initialize.
require
item_not_void: an_item /= Void
do
item := escaped_json_string (an_item)
end
feature -- Access
item: STRING
-- Contents
item: STRING
-- Contents
representation: STRING is
do
Result := "%""
Result.append (item)
Result.append_character ('%"')
end
feature -- Visitor pattern
accept (a_visitor: JSON_VISITOR) is
-- Accept `a_visitor'.
-- (Call `visit_json_string' procedure on `a_visitor'.)
do
a_visitor.visit_json_string (Current)
end
accept (a_visitor: JSON_VISITOR) is
-- Accept `a_visitor'.
-- (Call `visit_json_string' procedure on `a_visitor'.)
do
a_visitor.visit_json_string (Current)
end
feature -- Comparison
is_equal (other: like Current): BOOLEAN is
-- Is JSON_STRING made of same character sequence as `other'
-- (possibly with a different capacity)?
do
Result := item.is_equal (other.item)
end
is_equal (other: like Current): BOOLEAN is
-- Is JSON_STRING made of same character sequence as `other'
-- (possibly with a different capacity)?
do
Result := item.is_equal (other.item)
end
feature -- Change Element
append (a_string: STRING)is
-- Add an_item
require
a_string_not_void: a_string /= Void
do
item.append_string (a_string)
end
append (a_string: STRING)is
-- Add an_item
require
a_string_not_void: a_string /= Void
do
item.append_string (a_string)
end
feature -- Status report
hash_code: INTEGER is
-- Hash code value
do
Result := item.hash_code
end
hash_code: INTEGER is
-- Hash code value
do
Result := item.hash_code
end
feature -- Status report
debug_output: STRING
-- String that should be displayed in debugger to represent `Current'.
do
Result := item
end
debug_output: STRING
-- String that should be displayed in debugger to represent `Current'.
do
Result := item
end
feature {NONE} -- Implementation
escaped_json_string (s: STRING): STRING is
-- JSON string with '"' and '\' characters escaped
require
s_not_void: s /= Void
do
Result := s.twin
Result.replace_substring_all ("\", "\\")
Result.replace_substring_all ("%"", "\%"")
end
invariant
value_not_void: item /= Void
value_not_void: item /= Void
end