Implemented escaping of slash '/' only in case of '</' to avoid potential issue with javascript and </script> Many feature renaming to match Eiffel style and naming convention, kept previous feature as obsolete. Restructured the library to make easy extraction of "converter" classes if needed in the future. Updated part of the code to use new feature names.
47 lines
1.1 KiB
Plaintext
47 lines
1.1 KiB
Plaintext
note
|
|
description: "Objects that ..."
|
|
author: ""
|
|
date: "$Date$"
|
|
revision: "$Revision$"
|
|
|
|
class
|
|
JSON_FILE_READER
|
|
|
|
feature -- Access
|
|
|
|
read_json_from (a_path: READABLE_STRING_GENERAL): detachable STRING
|
|
local
|
|
l_file: PLAIN_TEXT_FILE
|
|
l_last_string: detachable STRING
|
|
l_file_count: INTEGER
|
|
l_fetch_done: BOOLEAN
|
|
do
|
|
create l_file.make_with_name (a_path)
|
|
-- We perform several checks until we make a real attempt to open the file.
|
|
if not l_file.exists then
|
|
print ("error: '" + a_path.out + "' does not exist%N") -- FIXME: unicode may be truncated
|
|
else
|
|
if not l_file.is_readable then
|
|
print ("error: '" + a_path.out + "' is not readable.%N") -- FIXME: unicode may be truncated
|
|
else
|
|
l_file_count := l_file.count
|
|
l_file.open_read
|
|
from
|
|
create Result.make (l_file_count)
|
|
until
|
|
l_fetch_done
|
|
loop
|
|
l_file.read_stream (1_024)
|
|
l_last_string := l_file.last_string
|
|
l_fetch_done := l_file.exhausted or l_file.end_of_file or l_last_string.count < 1_024
|
|
if not l_last_string.is_empty then
|
|
Result.append (l_last_string)
|
|
end
|
|
end
|
|
l_file.close
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|