npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

holidays-calendar

v1.0.2

Published

Library for retrieving the holidays' calendar of a locale.

Downloads

144

Readme

HolidaysCalendar

This is a container library for retrieving the holidays' calendar of a locale.

You can use it as a Node.js module or in browser, but you must extend it with your "localized" calendar or use it together with an available locale-module (like holidays-calendar-brazil).

Instalation

If you use NPM, then you can install it with npm install holidays-calendar. Othewise, you can download the latest release and use it in your browser or in other Javascript-based projects.

Creating a localized calendar

In order to create custom calendars, you must have Node.js installed. Inside src directory, there's a CSV spreadsheet file called holidays.csv. Change its content accordingly to your needs, keeping the same column scheme and date formats. Then run:

gulp generate --name

... where --name is your locale identificator. This will generate a new holidays-calendar-identificator module inside dist folder. There's a sample customization for the Brazilian Holidays Calendar, which happens to be the source code of the holidays-calendar-brazil module. It would be awesome if you could your custom calendar into the NPM repository.

Usage

Node.js

var calendar = require("../dist/HolidaysCalendar-brazil");
console.log('The total number of holidays in 2020 is '+calendar.Year(2020).total);

Browser

<script src="../dist/HolidaysCalendar.js"></script>
<script src="../dist/HolidaysCalendar-brazil.js" charset="utf-8"></script>
<script>
console.log('The total number of holidays in 2020 is '+HolidaysCalendar.Year(2020).total);
</script>

API Reference

AddCalendar(locale, data)

Inserts a new calendar into the container. locale: String, required. Locale identificator. data: Object, required. Must respect the follow pattern:

{
    "YEAR": {
        "total": "TOTAL_HOLIDAYS_IN_YEAR",
        "months": {
            "MONTH": {
                "total": "TOTAL_HOLIDAYS_IN_MONTH",
                "days": {
                    "DAY": "HOLIDAY",
                    ...
                },
            },
            ...
        }
    },
    ...
}

Example:

{
    "2017": {
        "total": 1,
        "months": {
            "1": {
                "total": 1,
                "days": {
                    "1": "New Years Day"
                }
            }
        }
    }
}

Locale(locale)

Sets/Gets which calendar is being used, identified by its respective locale.

locale: String, optional. If informed, sets the library to use the locale's calendar. If omitted, retrives the locale being used.

return: Mixed: String when called with no parameters; Nothing when setting the locale.

Year(year)

Retrieves information about holidays in year.

year: integer, required. Year reference.

return: Mixed. Object with structure: {total: integer, months: array of integer} when there are holidays within that year; False when there are no holidays in the given year.

Example

 var calendar = require("holidays-calendar-brazil");
 var data = calendar.Year(2020);
 \\data equals { months: [ 1, 2, 4, 5, 6, 9, 10, 11, 12 ], total: 11 }

Month(year, month)

Retrieves information about holidays in a specific month.

year: integer, required. Year reference.

month: integer, required. Month reference (January=1).

return: Mixed. Object with structure: {total: integer, days: array of integer} when there are holidays within that year; False when there are no holidays in the given month.

Example

 var calendar = require("holidays-calendar-brazil");
 var data = calendar.Month(2020, 2);
 \\data equals { days: [ 24, 25 ], total: 2 }

Day(year, month, day)

Retrieves information about a holiday in a specific date.

year: integer, required. Year reference.

month: integer, required. Month reference (January=1).

day: integer, required. Day reference.

return: Mixed. String representing the holiday name if the given date corresponds to a holiday according to the calendar in use; False when the date isn't a holiday.

Example

 var calendar = require("holidays-calendar-brazil");
 var data = calendar.Day(2020, 2, 25);
 \\data equals 'Carnaval'