GithubHelp home page GithubHelp logo

mschroeder / ical.js Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kewisch/ical.js

0.0 0.0 0.0 9.65 MB

Javascript parser for ics (rfc5545) and vcard (rfc6350) data

Home Page: https://mschroeder.github.io/ical.js/

License: Mozilla Public License 2.0

JavaScript 98.19% C 0.19% Makefile 0.16% HTML 1.45%

ical.js's Introduction

ical.js - Javascript parser for iCalendar, jCal, vCard, jCard.

This is a library to parse the formats defined in the following rfcs and their extensions:

The initial goal was to use it as a replacement for libical in the Mozilla Calendar Project, but the library has been written with the web in mind. This library enables you to do all sorts of cool experiments with calendar data and the web. Most algorithms here were taken from libical. If you are bugfixing this library, please check if the fix can be upstreamed to libical.

Build Status Coverage Status npm version CDNJS

Sandbox and Validator

If you want to try out ICAL.js right now, there is a jsfiddle set up and ready to use.

The ICAL validator demonstrates how to use the library in a webpage, and helps verify iCalendar and jCal. Try the validator online

The recurrence tester calculates occurrences based on a RRULE. It can be used to aid in creating test cases for the recurrence iterator. Try the recurrence tester online.

Installing

ICAL.js has no dependencies and is written in modern JavaScript. You can install ICAL.js via npm, if you would like to use it in Node.js:

npm install ical.js

Then simply import it for use:

import ICAL from "ical.js";

If you are working with a browser, be aware this is an ES6 module:

<script type="module">
  import ICAL from "https://unpkg.com/ical.js";
  document.querySelector("button").addEventListener("click", () => {
    ICAL.parse(document.getElementById("txt").value);
  });
</script>

If you need to make use of a script tag, you can use the transpiled ES5 version:

<script src="https://unpkg.com/ical.js/dist/ical.es5.cjs"></script>
<textarea id="txt"></textarea>
<button onclick="ICAL.parse(document.getElementById('txt').value)"></button>

Timezones

The stock ical.js does not register any timezones, due to the additional size it brings. If you'd like to do timezone conversion, and the timezone definitions are not included in the respective ics files, you'll need to use ical.timezones.js or its minified counterpart.

This file is not included in the distribution since it pulls in IANA timezones that might change regularly. See the github actions on building your own timezones during CI, or grab a recent build from main.

Documentation

For a few guides with code samples, please check out the wiki. If you prefer, full API documentation is available here. If you are missing anything, please don't hesitate to create an issue.

Developing

To contribute to ICAL.js you need to set up the development environment. A simple npm install will get you set up. If you would like to help out and would like to discuss any API changes, please feel free to create an issue.

Tests

The following test suites are available

npm run test-unit         # Node unit tests
npm run test-acceptance   # Node acceptance tests
npm run test-performance  # Performance comparison tests
npm run test-browser      # Browser unit and acceptance tests

npm run test              # Node unit and acceptance tests (This is fast and covers most aspects)
npm run test-all          # All of the above

See the wiki for more details.

Code coverage is automatically generated for the node unit tests. You can view the coverage results online, or run them locally to make sure new code is covered.

Linters

To make sure all ICAL.js code uses a common style, please run the linters using npm run lint. Please make sure you fix any issues shown by this command before sending a pull request.

Documentation

You can generate the documentation locally, this is also helpful to ensure the jsdoc you have written is valid. To do so, run npm run jsdoc. You will find the output in the docs/api/ subdirectory.

Packaging

When you are done with your work, you can run npm run build to create the single-file build for use in the browser, including its minified counterpart and the source map.

License

ical.js is licensed under the Mozilla Public License, version 2.0.

ical.js's People

Contributors

kewisch avatar lightsofapollo avatar mschroeder avatar dependabot[bot] avatar greenkeeper[bot] avatar darktrojan avatar greenkeeperio-bot avatar dilyanpalauzov avatar sunesimonsen avatar amrod- avatar decathlon1578 avatar zoehneto avatar make-my-day avatar taraman17 avatar leftmostcat avatar ganesh7 avatar wrexroad avatar stephandenker avatar kscc25 avatar laurentj avatar workgroupengineering avatar georgehrke avatar mcfedr avatar odeke-em avatar caugner avatar kennynaoh avatar zearin avatar youssef1313 avatar commanderroot avatar sildur avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.