summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/modules/wsgi/atomutil.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sca-cpp/trunk/modules/wsgi/atomutil.py23
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