vobject
Version:
iCalendar VObject Manipulation in NodeJS
246 lines (202 loc) • 7.47 kB
JavaScript
;
var helpers = require('./helpers');
var Property = require('./property');
var Component = require('./component');
var DateValue = require('./dateValue');
var DateTimeValue = require('./dateTimeValue');
module.exports = function() {
// http://tools.ietf.org/html/rfc5545#section-3.6.1
// Provide a grouping of component properties that describe an event.
var event = new Component('VEVENT');
// http://tools.ietf.org/html/rfc5545#section-3.8.4.7
event.setUID = function(uid) {
return event.setProperty(new Property('UID', uid));
};
event.getUID = function() {
var property = event.getProperty('UID');
return (property) ? property.value : undefined;
};
// http://tools.ietf.org/html/rfc5545#section-3.8.1.12
event.setSummary = function(summary) {
return event.setProperty(new Property('SUMMARY', helpers.escape(summary)));
};
event.getSummary = function() {
var property = event.getProperty('SUMMARY');
return (property) ? helpers.unescape(property.value) : undefined;
};
// http://tools.ietf.org/html/rfc5545#section-3.8.2.4
event.setDTStart = function(date) {
var property = new Property('DTSTART', date.toICS());
if (date.type === 'dateValue') {
property.setParameter('VALUE', 'DATE');
}
else if (date.type === 'dateTimeValue' && date.getTZID() !== undefined) {
property.setParameter('TZID', date.getTZID());
}
return event.setProperty(property);
};
event.getDTStart = function() {
var property = event.getProperty('DTSTART');
if (!property) {
return undefined;
}
var type = property.getParameter('VALUE');
if (type === 'DATE') {
var dateValue = new DateValue();
dateValue.parseICS(property.value);
return dateValue;
}
var dateTimeValue = new DateTimeValue();
dateTimeValue.parseICS(property.value, property.getParameter('TZID'));
return dateTimeValue;
};
// http://tools.ietf.org/html/rfc5545#section-3.8.2.2
event.setDTEnd = function(date) {
var property = new Property('DTEND', date.toICS());
if (date.type === 'dateValue') {
property.setParameter('VALUE', 'DATE');
}
else if (date.type === 'dateTimeValue' && date.getTZID() !== undefined) {
property.setParameter('TZID', date.getTZID());
}
return event.setProperty(property);
};
event.getDTEnd = function() {
var property = event.getProperty('DTEND');
if (!property) {
return undefined;
}
var type = property.getParameter('VALUE');
if (type === 'DATE') {
var dateValue = new DateValue();
dateValue.parseICS(property.value);
return dateValue;
}
var dateTimeValue = new DateTimeValue();
dateTimeValue.parseICS(property.value, property.getParameter('TZID'));
return dateTimeValue;
};
// http://tools.ietf.org/html/rfc5545#section-3.8.1.5
event.setDescription = function(description) {
return event.setProperty(new Property('DESCRIPTION', helpers.escape(description)));
};
event.getDescription = function() {
var property = event.getProperty('DESCRIPTION');
return (property) ? helpers.unescape(property.value) : undefined;
};
// http://tools.ietf.org/html/rfc5545#section-3.8.1.7
event.setLocation = function(location) {
return event.setProperty(new Property('LOCATION', helpers.escape(location)));
};
event.getLocation = function() {
var property = event.getProperty('LOCATION');
return (property) ? helpers.unescape(property.value) : undefined;
};
// http://tools.ietf.org/html/rfc5545#section-3.8.1.11
event.setStatus = function(status) {
return event.setProperty(new Property('STATUS', status.toUpperCase()));
};
event.getStatus = function() {
var property = event.getProperty('STATUS');
return (property) ? property.value : undefined;
};
// http://tools.ietf.org/html/rfc5545#section-3.8.7.2
event.setDTStamp = function(date) {
return event.setProperty(new Property('DTSTAMP', date.toICS()));
};
event.getDTStamp = function() {
var property = event.getProperty('DTSTAMP');
return (property) ? property.value : undefined;
};
// http://tools.ietf.org/html/rfc5545#section-3.8.7.3
event.setLastModified = function(date) {
return event.setProperty(new Property('LAST-MODIFIED', date.toICS()));
};
event.getLastModified = function() {
var property = event.getProperty('LAST-MODIFIED');
return (property) ? property.value : undefined;
};
// http://tools.ietf.org/html/rfc5545#section-3.8.7.4
event.setSequence = function(sequence) {
return event.setProperty(new Property('SEQUENCE', sequence.toString()));
};
event.getSequence = function() {
var property = event.getProperty('SEQUENCE');
return (property) ? parseInt(property.value.toString(), 10) : undefined;
};
// http://tools.ietf.org/html/rfc5545#section-3.8.7.1
event.setCreated = function(date) {
return event.setProperty(new Property('CREATED', date.toICS()));
};
event.getCreated = function() {
var property = event.getProperty('CREATED');
return (property) ? property.value : undefined;
};
// http://tools.ietf.org/html/rfc5545#section-3.8.4.3
event.setOrganizer = function(organizer) {
return event.setProperty(organizer);
};
event.getOrganizer = function() {
return event.getProperty('ORGANIZER');
};
// http://tools.ietf.org/html/rfc5545#section-3.8.4.1
event.addAttendee = function(attendee) {
return event.pushProperty(attendee);
};
event.getAttendees = function() {
return event.getProperties('ATTENDEE');
};
// http://tools.ietf.org/html/rfc5545#section-3.8.5.3
event.addRRULE = function(rruleICS) {
var property = new Property('RRULE');
property.parseICS(rruleICS);
return event.pushProperty(property);
};
event.getRRULEs = function() {
return event.getProperties('RRULE');
};
// http://tools.ietf.org/html/rfc5545#section-3.8.5.1
event.addEXDATE = function(exdateICS) {
var property = new Property('EXDATE');
property.parseICS(exdateICS);
return event.pushProperty(property);
};
event.getEXDATEs = function() {
return event.getProperties('EXDATE');
};
// http://tools.ietf.org/html/rfc5545#section-3.8.4.4
event.setRecurrenceID = function(date) {
var property = new Property('RECURRENCE-ID', date.toICS());
if (date.type === 'dateValue') {
property.setParameter('VALUE', 'DATE');
}
else if (date.type === 'dateTimeValue') {
property.setParameter('TZID', date.tzid);
}
return event.setProperty(property);
};
event.getRecurrenceID = function() {
var property = event.getProperty('RECURRENCE-ID');
if (!property) {
return undefined;
}
var type = property.getParameter('VALUE');
if (type === 'DATE') {
var dateValue = new DateValue();
dateValue.parseICS(property.value);
return dateValue;
}
var dateTimeValue = new DateTimeValue();
dateTimeValue.parseICS(property.value, property.getParameter('TZID'));
return dateTimeValue;
};
// http://tools.ietf.org/html/rfc5545#section-3.8.2.7
event.setTransparency = function(transparency) {
return event.setProperty(new Property('TRANSP', transparency.toUpperCase()));
};
event.getTransparency = function() {
var property = event.getProperty('TRANSP');
return (property) ? property.value : undefined;
};
return event;
};