calendario
Version:
Check if a day is a workday or holiday
207 lines (147 loc) • 5.48 kB
Markdown
# calendario
> Verifique dias de trabalho, feriados, finais de semana ou crie seus próprios eventos.
[](https://www.npmjs.org/package/calendario)
[](https://travis-ci.org/raphamorim/calendario)
## Instalação
Antes de qualquer coisa, você deve ter o [node](http://nodejs.org/) e o [npm](https://www.npmjs.org/) instalados.
```sh
$ npm install calendario
```
## Uso
Atualmente as fontes suportam apenas eventos nacionais (com exceção do Brasil e Estados Unidos). Na próxima release será adicionado mais fontes nacionais e regionais.
**Disponível para:**
- Brazil `.use('BR')`
- [Ver uso para o estados brasileiros](BR/states.md)
- Estados Unidos da America `.use('US')`
- [Ver uso para estados americanos](US/states.md)
Você pode definir a fonte que irá utilizar usando `use()`
```javascript
var calendario = require('calendario');
calendario.use('BR');
```
Definindo a fonte para um estado específico:
```javascript
var calendario = require('calendario');
calendario.use('US-NY');
```
Você também pode criar suas próprias fontes, passando um array de objetos:
```javascript
var calendario = require('calendario');
calendario.use('MozillaCalendar', [
{date: new Date('2020-11-25'), workday: true, summary: "Mozilla Summit"},
{date: new Date('2021-1-20'), workday: true, summary: "Mozilla another event"}
]);
calendario.use('GoogleCalendar', function(set) {
set([
{date: new Date('2017-6-3'), workday: true, summary: "Google IO"},
{date: new Date('2018-10-5'), workday: true, summary: "Google another event"},
]);
});
```
Você também pode criar suas próprias fontes, passando um arquivo `ics`
```javascript
var calendario = require('calendario');
calendario.use('BR', {file: 'pt-br.ics', parser: 'ics'});
```
## Métodos
#### isWorkday
Verifica se o dia em questão é um dia de trabalho ou feriado, baseado nas fontes definidas.
```javascript
var calendario = require('calendario');
calendario.use('BR');
calendario.isWorkday(new Date('2015-05-01')); // false
calendario.isWorkday(new Date('2015-05-02')); // true
```
#### aboutDay
Retorna todos os eventos de um dia:
```javascript
var calendario = require('calendario');
calendario.use('US');
calendario.aboutDay(new Date('2015-12-25'))
/*
[ { date: Fri Dec 25 2015 00:00:00 GMT-0200 (BRST),
summary: 'Christmas Day',
workday: false } ]
*/
```
#### range
Retorna todos os eventos especificados de um começo até um fim:
```javascript
var calendario = require('calendario');
calendario.use('US');
var range = calendario.range()
.begin(new Date('2015-12-20'))
.end(new Date('2016-01-05'))
.toArray();
/*
[ { date: Thu Dec 24 2015 00:00:00 GMT-0200 (BRST),
summary: 'Christmas Eve (from 2pm)',
workday: false },
{ date: Fri Dec 25 2015 00:00:00 GMT-0200 (BRST),
summary: 'Christmas Day',
workday: false },
{ date: Thu Dec 31 2015 00:00:00 GMT-0200 (BRST),
summary: 'New Year\'s Eve (from 2pm)',
workday: false },
{ date: Fri Jan 01 2016 00:00:00 GMT-0200 (BRST),
summary: 'New Year\'s Day',
workday: false } ]
*/
```
#### sourceList
Retorna todos os calendários que foram definidos como fonte:
```javascript
var calendario = require('calendario');
calendario.use('US');
calendario.use('BR');
calendario.sourceList(); // ['US', 'BR']
```
#### eventList
Retorna todos os eventos:
```javascript
var calendario = require('calendario');
calendario.use('MozillaCalendar', [
{date: new Date('2020-11-25'), workday: true, summary: "Mozilla Summit"},
{date: new Date('2021-1-20'), workday: true, summary: "Mozilla another event"}
]);
calendario.eventList();
/*
[ { workday: true,
summary: 'Mozilla Summit',
date: Tue Nov 24 2020 22:00:00 GMT-0200 (BRST) },
{ workday: true,
summary: 'Mozilla another event',
date: Wed Jan 20 2021 00:00:00 GMT-0200 (BRST) } ]
*/
```
#### clean
Remove todas fontes definidas:
```javascript
var calendario = require('calendario');
calendario.use('BR'); // Sources: ['BR']
calendario.clean(); // Sources: []
```
#### ignoreWeekends
Por padrão, o calendario não considera finais de semana como dias de trabalho. Porém você consegue mudar essa configuração usando:
```javascript
var calendario = require('calendario');
calendario.ignoreWeekends();
```
## Fonte de Dados
#### Brasil
- Eventos nacionais: Google Calendar; ID: `pt-br.brazilian#holiday@group.v.calendar.google.com`
- Eventos estaduais: [Wikipedia](http://pt.wikipedia.org/wiki/Feriados_no_Brasil#Festas_m.C3.B3veis)
#### Estados Unidos da America
- Eventos nacionais: Google Calendar; ID: `en.usa#holiday@group.v.calendar.google.com`
- Eventos estaduais: [Wikipedia](http://en.wikipedia.org/wiki/Public_holidays_in_the_United_States#Legal_holidays_by_states_and_political_divisions_of_the_United_States)
## Changelog
Veja o [Changelog](docs/changelog/changelog.md) para mais detalhes.
## Contribuindo
Não seja tímido, envie um Pull Request! Veja como:
1. Faça um fork do projeto!
2. Crie sua feature branch: `git checkout -b my-new-feature`
3. Faça um commit para suas mudanças: `git commit -m 'Adicionar alguma funcionalidade'`
4. Faça um push para o branch: `git push origin my-new-feature`
5. Agora é só dar submit do pull request e ser feliz :D
## Sobre
**Licença:** MIT ® [Raphael Amorim](https://github.com/raphamorim)