Coder Social home page Coder Social logo

jnrepo / ical.js Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kewisch/ical.js

0.0 1.0 1.0 5.44 MB

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

Home Page: http://mozilla-comm.github.com/ical.js/

License: Mozilla Public License 2.0

JavaScript 99.58% HTML 0.42%

ical.js's Introduction

jsical - Javascript parser for rfc5545

This is a library to parse the iCalendar format defined in rfc5545, as well as similar formats like vCard.

There are still some issues to be taken care of, but the library works for most cases. If you would like to help out and would like to discuss any API changes, please contact me or create an issue.

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 is now called ICAL.js and enables you to do all sorts of cool experiments with calendar data and the web. I am also aiming for a caldav.js when this is done. 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
Greenkeeper badge Dependency Status devDependency Status

Sandbox and Validator

If you want to try out ICAL.js right now, there is a jsfiddle set up and ready to use. Read on for documentation and example links.

There is also a validator that demonstrates how to use the library in a webpage in the sandbox/ subdirectory.

Try the validator online, it always uses the latest copy of ICAL.js.

Installing

You can install ICAL.js via npm, if you would like to use it in Node.js:

npm install ical.js

Alternatively, it is also available via bower for front-end development:

bower install ical.js

ICAL.js has no dependencies and uses fairly basic JavaScript. Therefore, it should work in all versions of Node.js and modern browsers. It does use getters and setters, so the minimum version of Internet Explorer is 9.

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. This requires Node.js 4.x or later and grunt. Run the following steps to get started.

npm install -g grunt-cli  # Might need to run with sudo
npm install .

You can now dive into the code, run the tests and check coverage.

Tests

Tests can either be run via Node.js or in the browser, but setting up the testing infrastructure requires node. More information on how to set up and run tests can be found on the wiki.

in Node.js

The quickest way to execute tests is using Node.js. Running the following command will run all test suites: performance, acceptance and unit tests.

grunt test-node

You can also select a single suite, or run a single test.

grunt test-node:performance
grunt test-node:acceptance
grunt test-node:unit

grunt test-node:single --test=test/parse_test.js

Appending the --debug option to any of the above commands will run the test(s) with node-inspector. It will start the debugging server and open it in Chrome or Opera, depending on what you have installed. The tests will pause before execution starts so you can set breakpoints and debug the unit tests you are working on.

If you run the performance tests comparison will be done between the current working version (latest), a previous build of ICAL.js (previous) and the unchanged copy of build/ical.js (from the master branch). See the wiki for more details.

in the browser

To run the browser tests, we are currently using karma. To run tests with karma, you can run the following targets:

grunt test-browser           # run all tests
grunt karma:unit             # run only the unit tests
grunt karma:acceptance       # run only the acceptance tests

Now you can visit http://localhost:9876 in your browser. The test output will be shown in the console you started the grunt task from. You can also run a single test:

grunt karma:single --test=test/parse_test.js

The mentioned targets all run the tests from start to finish. If you would like to debug the tests instead, you can add the --debug flag. Once you open the browser there will be a "debug" button. Clicking on the button opens am empty page, but if you open your browser's developer tools you will see the test output. You can reload this page as often as you want until all tests are running.

Last off, if you add the --remote option, karma will listen on all interfaces. This is useful if you are running the browser to test in a VM, for example when using Internet Exporer VM images.

Code Coverage

ICAL.js is set up to calculate code coverage. You can view the coverage results online, or run them locally to make sure new code is covered. Running grunt coverage will run the unit test suite measuring coverage. You can then open coverage/lcov-report/index.html to view the results in your browser.

Linters

To make sure all ICAL.js code uses a common style, please run the linters using grunt linters. 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 grunt jsdoc. You will find the output in the api/ subdirectory.

Packaging

When you are done with your work, you can run grunt package to create the single-file build for use in the browser, including its minified counterpart and the source map. These files need to be checked in (in a separate commit) and can be found in build/ical.js, build/ical.min.js and build/ical.min.js.map. Please see CONTRIBUTING.md for more details.

License

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

ical.js's People

Contributors

kewisch avatar lightsofapollo avatar mschroeder avatar greenkeeperio-bot avatar darktrojan avatar sunesimonsen avatar amrod- avatar decathlon1578 avatar greenkeeper[bot] avatar zoehneto avatar make-my-day avatar taraman17 avatar odeke-em avatar laurentj avatar stephandenker avatar wrexroad avatar ganesh7 avatar chotiwat avatar dbanetto avatar georgehrke avatar kennynaoh avatar

Watchers

James Cloos avatar

Forkers

mehowtv

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.