diff options
Diffstat (limited to '')
-rw-r--r-- | sca-cpp/trunk/modules/wsgi/atomutil.py | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/sca-cpp/trunk/modules/wsgi/atomutil.py b/sca-cpp/trunk/modules/wsgi/atomutil.py index 0ec83ca9e0..6c0a7c9a81 100644 --- a/sca-cpp/trunk/modules/wsgi/atomutil.py +++ b/sca-cpp/trunk/modules/wsgi/atomutil.py @@ -28,7 +28,7 @@ def entryElementsToValues(e): li = filter(selector((element, "'id")), e) i = "" if isNil(li) else elementValue(car(li)) lc = filter(selector((element, "'content")), e) - return (t, i, cadr(elementChildren(car(lc)))) + return (t, i, elementValue(car(lc))) # Convert a list of elements to a list of values representing ATOM entries def entriesElementsToValues(e): @@ -48,6 +48,14 @@ def entryValue(e): v = elementsToValues((caddr(e),)) return cons(car(e), (cadr(e), cdr(car(v)))) +# 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": + return False + return contains(car(l), "<feed") + # Convert a list of strings to a list of values representing an ATOM feed def readATOMFeed(l): f = readXML(l) @@ -60,12 +68,21 @@ def readATOMFeed(l): return (elementValue(car(t)), elementValue(car(i))) return cons(elementValue(car(t)), cons(elementValue(car(i)), entriesElementsToValues(e))) +# Convert an ATOM feed containing elements to an ATOM feed containing values +def feedValuesLoop(e): + if (isNil(e)): + return e + return cons(entryValue(car(e)), feedValuesLoop(cdr(e))) + +def feedValues(e): + return cons(car(e), cons(cadr(e), feedValuesLoop(cddr(e)))) + # Convert a list of values representy an ATOM entry to a list of elements def entryElement(l): return (element, "'entry", (attribute, "'xmlns", "http://www.w3.org/2005/Atom"), (element, "'title", (attribute, "'type", "text"), car(l)), (element, "'id", cadr(l)), - (element, "'content", (attribute, "'type", "application/xml"), caddr(l)), + (element, "'content", (attribute, "'type", ("application/xml" if isList(caddr(l)) else "text")), caddr(l)), (element, "'link", (attribute, "'href", cadr(l)))) # Convert a list of values representing ATOM entries to a list of elements @@ -85,7 +102,7 @@ def writeATOMFeed(l): (element, "'id", cadr(l))) if isNil(cddr(l)): return writeXML((f,), True) - fe = f + entriesElements(cddr(l)) + fe = append(f, entriesElements(cddr(l))) return writeXML((fe,), True) # Convert an ATOM entry containing a value to an ATOM entry containing an item element |