Exemplo n.º 1
0
    'false': False,
    'null': None,
}


def JSONConstant(match, context, c=_CONSTANTS):
    s = match.group(0)
    fn = getattr(context, 'parse_constant', None)
    if fn is None:
        rval = c[s]
    else:
        rval = fn(s)
    return rval, None


pattern('(-?Infinity|NaN|true|false|null)')(JSONConstant)


def JSONNumber(match, context):
    match = JSONNumber.regex.match(match.string, *match.span())
    integer, frac, exp = match.groups()
    if frac or exp:
        fn = getattr(context, 'parse_float', None) or float
        res = fn(integer + (frac or '') + (exp or ''))
    else:
        fn = getattr(context, 'parse_int', None) or int
        res = fn(integer)
    return res, None


pattern(r'(-?(?:0|[1-9]\d*))(\.\d+)?([eE][-+]?\d+)?')(JSONNumber)
Exemplo n.º 2
0
    endlineno, endcolno = linecol(doc, end)
    return '%s: line %d column %d - line %d column %d (char %d - %d)' % (
        msg, lineno, colno, endlineno, endcolno, pos, end)

_CONSTANTS = {
    '-Infinity': NegInf,
    'Infinity': PosInf,
    'NaN': NaN,
    'true': True,
    'false': False,
    'null': None,
}

def JSONConstant(match, context, c=_CONSTANTS):
    return c[match.group(0)], None
pattern('(-?Infinity|NaN|true|false|null)')(JSONConstant)

def JSONNumber(match, context):
    match = JSONNumber.regex.match(match.string, *match.span())
    integer, frac, exp = match.groups()
    if frac or exp:
        res = float(integer + (frac or '') + (exp or ''))
    else:
        res = int(integer)
    return res, None
pattern(r'(-?(?:0|[1-9]\d*))(\.\d+)?([eE][-+]?\d+)?')(JSONNumber)

STRINGCHUNK = re.compile(r'(.*?)(["\\])', FLAGS)
BACKSLASH = {
    '"': u'"', '\\': u'\\', '/': u'/',
    'b': u'\b', 'f': u'\f', 'n': u'\n', 'r': u'\r', 't': u'\t',
Exemplo n.º 3
0

def errmsg(msg, doc, pos, end=None):
    lineno, colno = linecol(doc, pos)
    if end is None:
        return '%s: line %d column %d (char %d)' % (msg, lineno, colno, pos)
    endlineno, endcolno = linecol(doc, end)
    return '%s: line %d column %d - line %d column %d (char %d - %d)' % (
        msg, lineno, colno, endlineno, endcolno, pos, end)


def JSONInfinity(match, context):
    return PosInf, None


pattern('Infinity')(JSONInfinity)


def JSONNegInfinity(match, context):
    return NegInf, None


pattern('-Infinity')(JSONNegInfinity)


def JSONNaN(match, context):
    return NaN, None


pattern('NaN')(JSONNaN)
Exemplo n.º 4
0
        colno = pos
    else:
        colno = pos - doc.rindex('\n', 0, pos)
    return lineno, colno

def errmsg(msg, doc, pos, end=None):
    lineno, colno = linecol(doc, pos)
    if end is None:
        return '%s: line %d column %d (char %d)' % (msg, lineno, colno, pos)
    endlineno, endcolno = linecol(doc, end)
    return '%s: line %d column %d - line %d column %d (char %d - %d)' % (
        msg, lineno, colno, endlineno, endcolno, pos, end)

def JSONInfinity(match, context):
    return PosInf, None
pattern('Infinity')(JSONInfinity)

def JSONNegInfinity(match, context):
    return NegInf, None
pattern('-Infinity')(JSONNegInfinity)

def JSONNaN(match, context):
    return NaN, None
pattern('NaN')(JSONNaN)

def JSONTrue(match, context):
    return True, None
pattern('true')(JSONTrue)

def JSONFalse(match, context):
    return False, None
Exemplo n.º 5
0
                    pass
                return simplejson.JSONEncoder.default(self, obj)
            '''
            def _iterencode_default(self, obj, markers=None):
                try:
                    return datetime2json(obj)
                except TypeError:
                    pass
                return simplejson.JSONEncoder._iterencode_default(
                    self, obj, markers)

        def JSONDateTime(match, context):
            dt = json2datetime(match.string)
            return (dt, None)

        pattern(re_datetime)(JSONDateTime)

        class DateDecoder(simplejson.JSONDecoder):
            _scanner = Scanner(ANYTHING + [JSONDateTime])

        # Encoder/decoder functions
        def encode(obj):
            try:
                json = simplejson.dumps(obj, cls=DateEncoder)
                return json.encode('utf8')
            except (SystemExit, KeyboardInterrupt):
                # For python 2.4 compatibility
                raise
            except Exception, e:
                raise EncodeError, (
                    'exception [%s] raised in simplejson: %s' %