vobject
Version:
iCalendar VObject Manipulation in NodeJS
206 lines (144 loc) • 8.22 kB
Markdown
VObject-JS -- iCalendar VObject Manipulation in NodeJS
VObject-JS allows you to easily manipulate iCalendar objects using JavaScript. Implements [rfc5545](http://tools.ietf.org/html/rfc5545). Inspired by [node-icalendar](https://github.com/tritech/node-icalendar), [ical.js](https://github.com/mozilla-comm/ical.js/) and [sabre-vobject](https://github.com/fruux/sabre-vobject).
# Test
[ ](https://www.codeship.io/projects/6175)
# Installation
```
npm install vobject
var vobject = require('vobject');
```
# Example
## Create a Calendar
The top-level element in iCalendar is the Calendaring and Scheduling Core Object, a collection of calendar and scheduling information. Typically, this information will consist of a single iCalendar object.
```js
var calendar = vobject.calendar();
```
The body of the iCalendar object (the icalbody) is made up of a list of calendar properties and one or more calendar components.
```js
calendar.setMethod('REQUEST')
```
## Create a Event
```js
var event = vobject.event();
event.setSummary('Hello World!');
event.setDescription('(made with Sunrise)');
```
Then, add the event to that calendar (events need to be added to a calendar to be a proper iCal object):
```js
calendar.pushComponent(event);
```
Then, to ICS:
```js
calendar.toICS();
```
## Add Attendees and Organizer
```js
var attendee = vobject.attendee();
attendee.setCN('Pierre Valade');
attendee.setMail('user@domain.com');
attendee.setPartStat('ACCEPTED');
event.addAttendee(attendee);
```
```js
var organizer = vobject.organizer();
organizer.setCN('Jeremy Le Van');
organizer.setMail('user@domain.com');
event.setOrganizer(organizer);
```
## Set Dates for an Event
Date:
```js
var date = vobject.dateValue();
date.setDate(1986, 10, 18);
// or
date.parseDate('1986-10-18');
```
Date Time:
```js
var dateTime = vobject.dateTimeValue();
dateTime.setDateTime(1986, 10, 18, 13, 05, 00, 120); // last parameter is offset in minutes
// or
dateTime.parseDateTime('1986-10-18T13:00:00+02:00'); // ISO 8601 (with TimeZone support)
```
Then attach `date` or `dateTime` to an event:
```js
event.setDTStart(date)
event.setDTStart(dateTime)
```
# API
## [vobject.property(name, value, parameters)](docs/vobject/property.md)
#### [property.setParameter(name, value)](docs/vobject/property.md#propertysetparameternamevalue)
#### [property.getParameter(name)](docs/vobject/property.md#propertygetparametername)
#### [property.setValue(value)](docs/vobject/property.md#propertysetvaluevalue)
#### [property.getValue()](docs/vobject/property.md#propertygetvalue)
#### [property.toICS()](docs/vobject/property.md#propertytoics)
## [vobject.component(name)](docs/vobject/component.md)
#### [component.pushProperty(property)](docs/vobject/component.md#componentpushpropertyproperty)
#### [component.getProperties(name)](docs/vobject/component.md#componentgetpropertiesname)
#### [component.setProperty(property)](docs/vobject/component.md#componentsetpropertyproperty)
#### [component.getProperty(name, index=0)](docs/vobject/component.md#componentgetpropertyname-index0)
#### [component.pushComponent(childComponent)](docs/vobject/component.md#componentpushcomponentchildcomponent)
#### [component.toICSLines()](docs/vobject/component.md#componenttoicslines)
#### [component.toICS()](docs/vobject/component.md#componenttoics)
## [vobject.calendar()](docs/vobject/calendar.md)
#### [calendar.setMethod(method)](docs/vobject/calendar.md#setmethodmethod)
#### [calendar.getMethod()](docs/vobject/calendar.md#getmethod)
## [vobject.event()](docs/vobject/event.md)
#### [event.setUID(uid)](docs/vobject/event.md#eventsetuiduid-rfc)
#### [event.getUID()](docs/vobject/event.md#eventgetuid-rfc)
#### [event.setSummary(summary)](docs/vobject/event.md#eventsetsummarysummary-rfc)
#### [event.getSummary()](docs/vobject/event.md#eventgetsummary-rfc)
#### [event.setDTStart(date)](docs/vobject/event.md#eventsetdtstartdate-rfc)
#### [event.getDTStart()](docs/vobject/event.md#eventgetdtstart-rfc)
#### [event.setDTEnd(date)](docs/vobject/event.md#eventsetdtenddate-rfc)
#### [event.getDTEnd()](docs/vobject/event.md#eventgetdtend-rfc)
#### [event.setDescription(description)](docs/vobject/event.md#eventsetdescriptiondescription-rfc)
#### [event.getDescription()](docs/vobject/event.md#eventgetdescription-rfc)
#### [event.setLocation(location)](docs/vobject/event.md#eventsetlocationlocation-rfc)
#### [event.getLocation()](docs/vobject/event.md#eventgetlocation-rfc)
#### [event.setStatus(status)](docs/vobject/event.md#eventsetstatusstatus-rfc)
#### [event.getStatus()](docs/vobject/event.md#eventgetstatus-rfc)
#### [event.setDTStamp(date)](docs/vobject/event.md#eventsetdtstampdate-rfc)
#### [event.getDTStamp()](docs/vobject/event.md#eventgetdtstamp-rfc)
#### [event.setLastModified(date)](docs/vobject/event.md#eventsetlastmodifieddate-rfc)
#### [event.getLastModified()](docs/vobject/event.md#eventgetlastmodified-rfc)
#### [event.setSequence(integer)](docs/vobject/event.md#eventsetsequenceinteger-rfc)
#### [event.getSequence()](docs/vobject/event.md#eventgetsequence-rfc)
#### [event.setCreated(date)](docs/vobject/event.md#eventsetcreateddate-rfc)
#### [event.getCreated()](docs/vobject/event.md#eventgetcreated-rfc)
#### [event.setOrganizer(organizer)](docs/vobject/event.md#eventsetorganizerorganizer-rfc)
#### [event.getOrganizer()](docs/vobject/event.md#eventgetorganizer-rfc)
#### [event.addAttendee(attendee)](docs/vobject/event.md#eventaddattendeeattendee-rfc)
#### [event.getAttendees()](docs/vobject/event.md#eventgetattendees-rfc)
#### [event.addRRULE(rrule)](docs/vobject/event.md#eventaddrrulerrule-rfc)
#### [event.getRRULEs()](docs/vobject/event.md#eventgetrrules-rfc)
#### [event.setRecurrenceID(date)](docs/vobject/event.md#eventsetrecurrenceiddate-rfc)
#### [event.getRecurrenceID()](docs/vobject/event.md#eventgetrecurrenceid-rfc)
#### [event.setTransparency(transparency)](docs/vobject/event.md#settransparencytransparency)
#### [event.getTransparency()](docs/vobject/event.md#eventgettransparency)
## [vobject.person(name)](docs/vobject/person.md)
#### [person.setCUType(type)](docs/vobject/person.md#personsetcutypetype-rfc)
#### [person.getCUType()](docs/vobject/person.md#persongetcutype-rfc)
#### [person.setCN(cn)](docs/vobject/person.md#personsetcncn-rfc)
#### [person.getCN()](docs/vobject/person.md#persongetcn-rfc)
#### [person.setMail(mail)](docs/vobject/person.md#personsetmailmail)
#### [person.getMail()](docs/vobject/person.md#persongetmail)
## [vobject.attendee()](docs/vobject/attendee.md)
#### [attendee.setRole(role)](docs/vobject/attendee.md#attendeesetrolerole-rfc)
#### [attendee.getRole()](docs/vobject/attendee.md#attendeegetrole-rfc)
#### [attendee.setPartStat(partstat)](docs/vobject/attendee.md#attendeesetpartstatpartstat-rfc)
#### [attendee.getPartStat()](docs/vobject/attendee.md#attendeegetpartstat-rfc)
#### [attendee.setRSVP(rsvp)](docs/vobject/attendee.md#attendeesetrsvprsvp-rfc)
#### [attendee.getRSVP()](docs/vobject/attendee.md#attendeegetrsvp-rfc)
## [vobject.organizer()](docs/vobject/organizer.md)
## [vobject.dateValue(dateString='')](docs/vobject/dateValue.md)
#### [dateValue.type](docs/vobject/dateValue.md#datevaluetype--datevalue)
#### [dateValue.parseDate(dateString)](docs/vobject/dateValue.md#dateparsedatedatestring)
#### [dateValue.toICS()](docs/vobject/dateValue.md#datetoics)
## [vobject.dateTimeValue(dateTimeString='')](docs/vobject/dateTimeValue.md)
#### [dateTimeValue.type](docs/vobject/dateTimeValue.md#datetimevaluetype--datetimevalue)
#### [dateTimeValue.parseDateTime(dateTimeString)](docs/vobject/dateTimeValue.md#dateparsedatetimedatetimestring)
#### [dateTimeValue.parseTimestamp(timestamp)](docs/vobject/dateTimeValue.md#dateparsetimestamptimestamp)
#### [dateTimeValue.setTZID(tzid)](docs/vobject/dateTimeValue.md#datesettzidtzid)
#### [dateTimeValue.getTZID()](docs/vobject/dateTimeValue.md#dategettzid)
#### [dateTimeValue.toICS()](docs/vobject/dateTimeValue.md#datetoics)