VObject allows you to easily manipulate iCalendar objects using JavaScript. Implements rfc5545.
JavaScript Makefile
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
docs/vobject
lib add method chaining May 12, 2016
test add method chaining May 12, 2016
.gitignore
.jshintrc
AUTHORS Updated package.json Aug 19, 2013
LICENSE
Makefile
README.md
examples.js
index.js
package.json

README.md

VObject-JS -- iCalendar VObject Manipulation in NodeJS

VObject-JS allows you to easily manipulate iCalendar objects using JavaScript. Implements rfc5545. Inspired by node-icalendar, ical.js and sabre-vobject.

Test

Codeship Status for sunrise/vobject-js

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.

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.

calendar.setMethod('REQUEST')

Create a Event

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):

calendar.pushComponent(event);

Then, to ICS:

calendar.toICS();

Add Attendees and Organizer

var attendee = vobject.attendee();
attendee.setCN('Pierre Valade');
attendee.setMail('user@domain.com');
attendee.setPartStat('ACCEPTED');
event.addAttendee(attendee);
var organizer = vobject.organizer();
organizer.setCN('Jeremy Le Van');
organizer.setMail('user@domain.com');
event.setOrganizer(organizer);

Set Dates for an Event

Date:

var date = vobject.dateValue();
date.setDate(1986, 10, 18);
// or
date.parseDate('1986-10-18');

Date Time:

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:

event.setDTStart(date)
event.setDTStart(dateTime)

API

vobject.property(name, value, parameters)

property.setParameter(name, value)
property.getParameter(name)
property.setValue(value)
property.getValue()
property.toICS()

vobject.component(name)

component.pushProperty(property)
component.getProperties(name)
component.setProperty(property)
component.getProperty(name, index=0)
component.pushComponent(childComponent)
component.toICSLines()
component.toICS()

vobject.calendar()

calendar.setMethod(method)
calendar.getMethod()

vobject.event()

event.setUID(uid)
event.getUID()
event.setSummary(summary)
event.getSummary()
event.setDTStart(date)
event.getDTStart()
event.setDTEnd(date)
event.getDTEnd()
event.setDescription(description)
event.getDescription()
event.setLocation(location)
event.getLocation()
event.setStatus(status)
event.getStatus()
event.setDTStamp(date)
event.getDTStamp()
event.setLastModified(date)
event.getLastModified()
event.setSequence(integer)
event.getSequence()
event.setCreated(date)
event.getCreated()
event.setOrganizer(organizer)
event.getOrganizer()
event.addAttendee(attendee)
event.getAttendees()
event.addRRULE(rrule)
event.getRRULEs()
event.setRecurrenceID(date)
event.getRecurrenceID()
event.setTransparency(transparency)
event.getTransparency()

vobject.person(name)

person.setCUType(type)
person.getCUType()
person.setCN(cn)
person.getCN()
person.setMail(mail)
person.getMail()

vobject.attendee()

attendee.setRole(role)
attendee.getRole()
attendee.setPartStat(partstat)
attendee.getPartStat()
attendee.setRSVP(rsvp)
attendee.getRSVP()

vobject.organizer()

vobject.dateValue(dateString='')

dateValue.type
dateValue.parseDate(dateString)
dateValue.toICS()

vobject.dateTimeValue(dateTimeString='')

dateTimeValue.type
dateTimeValue.parseDateTime(dateTimeString)
dateTimeValue.parseTimestamp(timestamp)
dateTimeValue.setTZID(tzid)
dateTimeValue.getTZID()
dateTimeValue.toICS()