aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/caldav/sax.js5
-rw-r--r--lib/caldav/sax/calendar_data_handler.js17
2 files changed, 18 insertions, 4 deletions
diff --git a/lib/caldav/sax.js b/lib/caldav/sax.js
index e0c0a1b..c861eee 100644
--- a/lib/caldav/sax.js
+++ b/lib/caldav/sax.js
@@ -18,6 +18,7 @@
var events = [
'ontext',
+ 'oncdata',
'onopentag',
'onclosetag',
'onerror',
@@ -198,6 +199,10 @@
this._fireHandler('ontext', data);
},
+ oncdata: function(data) {
+ this._fireHandler('oncdata', data);
+ },
+
onerror: function(data) {
//TODO: XXX implement handling of parsing errors.
//unlikely but possible if server goes down
diff --git a/lib/caldav/sax/calendar_data_handler.js b/lib/caldav/sax/calendar_data_handler.js
index d24bfb0..ac55c78 100644
--- a/lib/caldav/sax/calendar_data_handler.js
+++ b/lib/caldav/sax/calendar_data_handler.js
@@ -14,12 +14,21 @@
//value where key is local tag name
//and value is the text.
ontext: function(data) {
- var handler = this.handler;
- this.current[this.currentTag[handler.tagField]] =
- CalendarDataHandler.parseICAL(data);
- }
+ return CalendarDataHandler.ondata.call(this, data);
+ },
+
+ // Servers can also stash ical data inside of an xml cdata.
+ oncdata: function(data) {
+ return CalendarDataHandler.ondata.call(this, data);
+ },
});
+ CalendarDataHandler.ondata = function(data) {
+ var handler = this.handler;
+ this.current[this.currentTag[handler.tagField]] =
+ CalendarDataHandler.parseICAL(data);
+ };
+
/**
* Default ical parser handler.
*