diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/caldav/sax.js | 5 | ||||
-rw-r--r-- | lib/caldav/sax/calendar_data_handler.js | 17 |
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. * |