+++ /dev/null
-"""This module contains single a function for normalizing JSON strings."""
-# Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v1.0 which accompanies this distribution,
-# and is available at http://www.eclipse.org/legal/epl-v10.html
-
-__author__ = "Vratko Polak"
-__copyright__ = "Copyright(c) 2015, Cisco Systems, Inc."
-__license__ = "Eclipse Public License v1.0"
-__email__ = "vrpolak@cisco.com"
-
-try:
- import simplejson as _json
-except ImportError: # Python2.7 calls it json.
- import json as _json
-from hsfl import Hsfl as _Hsfl
-from hsfod import Hsfod as _Hsfod
-
-
-def _hsfl_array(s_and_end, scan_once, **kwargs):
- """Scan JSON array as usual, but return hsfl instead of list."""
- values, end = _json.decoder.JSONArray(s_and_end, scan_once, **kwargs)
- return _Hsfl(values), end
-
-
-class _Decoder(_json.JSONDecoder):
- """Private class to act as customized JSON decoder.
-
- Based on: http://stackoverflow.com/questions/10885238/
- python-change-list-type-for-json-decoding"""
- def __init__(self, **kwargs):
- """Initialize decoder with special array implementation."""
- _json.JSONDecoder.__init__(self, **kwargs)
- # Use the custom JSONArray
- self.parse_array = _hsfl_array
- # Use the python implemenation of the scanner
- self.scan_once = _json.scanner.py_make_scanner(self)
-
-
-def hsf_json(text): # pylint likes lowercase, Robot shall understand Hsf_Json
- """Return sorted indented JSON string, or an error message string."""
- try:
- object_decoded = _json.loads(text, cls=_Decoder, object_hook=_Hsfod)
- except ValueError as err:
- return str(err) + '\n' + text
- pretty_json = _json.dumps(object_decoded, separators=(',', ': '), indent=1)
- return pretty_json + '\n' # to avoid diff "no newline" warning line