diff options
Diffstat (limited to '')
-rw-r--r-- | sca-cpp/trunk/modules/wsgi/atomutil.py | 10 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/wsgi/elemutil.py | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/wsgi/jsonutil.py | 14 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/wsgi/rssutil.py | 4 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/wsgi/xmlutil.py | 8 |
5 files changed, 27 insertions, 11 deletions
diff --git a/sca-cpp/trunk/modules/wsgi/atomutil.py b/sca-cpp/trunk/modules/wsgi/atomutil.py index 6c0a7c9a81..1e6a7c31b5 100644 --- a/sca-cpp/trunk/modules/wsgi/atomutil.py +++ b/sca-cpp/trunk/modules/wsgi/atomutil.py @@ -50,11 +50,9 @@ def entryValue(e): # Return true if a list of strings represents an ATOM feed def isATOMFeed(l): - if isNil(l): - return False - if car(l)[0:5] != "<?xml": + if not isXML(l): return False - return contains(car(l), "<feed") + return contains(car(l), "<feed") and contains(car(l), "=\"http://www.w3.org/2005/Atom\"") # Convert a list of strings to a list of values representing an ATOM feed def readATOMFeed(l): @@ -107,7 +105,9 @@ def writeATOMFeed(l): # Convert an ATOM entry containing a value to an ATOM entry containing an item element def entryValuesToElements(v): - return cons(car(v), cons(cadr(v), valuesToElements((cons("'item", caddr(v)),)))) + if isList(caddr(v)): + return cons(car(v), cons(cadr(v), valuesToElements((cons("'item", caddr(v)),)))) + return cons(car(v), cons(cadr(v), valuesToElements((("'item", caddr(v)),)))) # Convert an ATOM feed containing values to an ATOM feed containing elements def feedValuesToElementsLoop(v): diff --git a/sca-cpp/trunk/modules/wsgi/elemutil.py b/sca-cpp/trunk/modules/wsgi/elemutil.py index ad971ba6ba..b4b28d5110 100644 --- a/sca-cpp/trunk/modules/wsgi/elemutil.py +++ b/sca-cpp/trunk/modules/wsgi/elemutil.py @@ -117,7 +117,7 @@ def elementsToValues(e): def valueToElement(t): if isList(t) and not isNil(t) and isSymbol(car(t)): n = car(t) - v = cadr(t) + v = () if isNil(cdr(t)) else cadr(t) if not isList(v): if n[0:2] == atsign: return (attribute, n[1:], v) diff --git a/sca-cpp/trunk/modules/wsgi/jsonutil.py b/sca-cpp/trunk/modules/wsgi/jsonutil.py index f69559de54..ad8f5fcc6b 100644 --- a/sca-cpp/trunk/modules/wsgi/jsonutil.py +++ b/sca-cpp/trunk/modules/wsgi/jsonutil.py @@ -64,7 +64,14 @@ def jsValToValue(jsv): if isinstance(jsv, basestring): return str(jsv) return jsv - + +# Return true if a list of strings contains a JSON document +def isJSON(l): + if isNil(l): + return False + s = car(l)[0:1] + return s == "[" or s == "{" + # Convert a list of strings representing a JSON document to a list of values def readJSON(l): s = StringIO() @@ -108,7 +115,10 @@ def valuesToJSProperties(o, l): # Convert a list of values to a list of strings representing a JSON document def writeJSON(l): - jsv = valuesToJSProperties({}, l) + if isJSArray(l): + jsv = valuesToJSElements(list(range(0, len(l))), l, 0) + else: + jsv = valuesToJSProperties({}, l) s = json.dumps(jsv, separators=(',',':')) return (s,) diff --git a/sca-cpp/trunk/modules/wsgi/rssutil.py b/sca-cpp/trunk/modules/wsgi/rssutil.py index 4f060d2321..984d71b690 100644 --- a/sca-cpp/trunk/modules/wsgi/rssutil.py +++ b/sca-cpp/trunk/modules/wsgi/rssutil.py @@ -50,9 +50,7 @@ def entryValue(e): # Return true if a list of strings represents an RSS feed def isRSSFeed(l): - if isNil(l): - return False - if car(l)[0:5] != "<?xml": + if not isXML(l): return False return contains(car(l), "<rss") diff --git a/sca-cpp/trunk/modules/wsgi/xmlutil.py b/sca-cpp/trunk/modules/wsgi/xmlutil.py index a1bc04629a..35ccb7f803 100644 --- a/sca-cpp/trunk/modules/wsgi/xmlutil.py +++ b/sca-cpp/trunk/modules/wsgi/xmlutil.py @@ -42,6 +42,14 @@ def readElements(l): return l return cons(readElement(car(l)), readElements(cdr(l))) +# Return true if a list of strings represents an XML document +def isXML(l): + if isNil(l): + return False + if car(l)[0:5] != "<?xml": + return False + return True + # Parse a list of strings representing an XML document class NamespaceParser(et.XMLTreeBuilder): def __init__(self): |