46 lines
1.2 KiB
JavaScript
Raw Normal View History

2016-04-20 11:32:48 +02:00
var ical = require('./ical')
, request = require('request')
, fs = require('fs')
exports.fromURL = function(url, opts, cb){
if (!cb)
return;
request(url, opts, function(err, r, data){
if (err)
return cb(err, null);
cb(undefined, ical.parseICS(data));
})
}
exports.parseFile = function(filename){
return ical.parseICS(fs.readFileSync(filename, 'utf8'))
}
2017-01-14 19:31:24 +01:00
var rrule = require('rrule-alt').RRule
2016-04-20 11:32:48 +02:00
ical.objectHandlers['RRULE'] = function(val, params, curr, stack, line){
curr.rrule = line;
return curr
}
var originalEnd = ical.objectHandlers['END'];
ical.objectHandlers['END'] = function(val, params, curr, stack){
if (curr.rrule) {
var rule = curr.rrule.replace('RRULE:', '');
if (rule.indexOf('DTSTART') === -1) {
2016-04-23 17:20:58 +02:00
if (curr.start.length === 8) {
var comps = /^(\d{4})(\d{2})(\d{2})$/.exec(curr.start);
if (comps) {
2016-05-03 11:56:24 +02:00
curr.start = new Date (comps[1], comps[2] - 1, comps[3]);
2016-04-23 17:20:58 +02:00
}
}
2016-04-20 11:32:48 +02:00
rule += ';DTSTART=' + curr.start.toISOString().replace(/[-:]/g, '');
rule = rule.replace(/\.[0-9]{3}/, '');
}
curr.rrule = rrule.fromString(rule);
}
return originalEnd.call(this, val, params, curr, stack);
}