My favorites | Sign in
Project Home Downloads Wiki Issues Source
Checkout   Browse   Changes    
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# ----------------------------------------------------------------------------
# Verifica se a data passada por parâmetro é um feriado ou não.
# Caso não seja passado nenhuma data é pego a data atual.
# Pode-se configurar a variável ZZFERIADO para os feriados regionais.
# O formato é o dd/mm:descrição, por exemplo: 20/11:Consciência negra.
# Uso: zzferiado -l [ano] | [data]
# Ex.: zzferiado 25/12/2008
# zzferiado -l
# zzferiado -l 2010
#
# Autor: Marcell S. Martini <marcellmartini (a) gmail com>
# Desde: 2008-11-21
# Versão: 4
# Licença: GPLv2
# Requisitos: zzcarnaval zzcorpuschristi zzdiadasemana zzsextapaixao
# Tags: data
# ----------------------------------------------------------------------------
zzferiado ()
{
zzzz -h feriado "$1" && return

local feriados carnaval corpuschristi
local hoje data sextapaixao ano listar
local dia diasemana descricao LINHA
local pulaparacoluna22

hoje=$(date '+%d/%m/%Y')

# Verifica se foi passado o parâmetro -l
if [ "$1" = "-l" ]; then
# Se não for passado $2 pega o ano atual
ano=${2:-$(basename $hoje)}

# Seta a flag listar
listar=1

# Teste da variável ano
zztool -e testa_ano $ano || return 1
else
# Se não for passada a data é pega a data de hoje
data=${1:-$hoje}

# Verifica se a data é valida
zztool -e testa_data "$data" || return 1

# Uma coisa interessante, como data pode ser usada com /(20/11/2008)
# podemos usar o basename e dirname para pegar o que quisermos
# Ex.: dirname 25/12/2008 -> 25/12
# basename 25/12/2008 -> 2008
#
# Pega só o dia e o mes no formato: dd/mm
data=$(dirname $data)
ano=$(basename ${1:-$hoje})
fi

# Para feriados Estaduais ou regionais Existe a variável de
# ambiente ZZFERIADO que pode ser configurada no $HOME/.bashrc e
# colocar as datas com dd/mm:descricao
carnaval=$(dirname $(zzcarnaval $ano ) )
sextapaixao=$(dirname $(zzsextapaixao $ano ) )
corpuschristi=$(dirname $(zzcorpuschristi $ano ) )
feriados="01/01:Confraternização Universal $carnaval:Carnaval $sextapaixao:Sexta-ferida da Paixao 21/04:Tiradentes 01/05:Dia do Trabalho $corpuschristi:Corpu Christi 07/09:Independência do Brasil 12/10:Nossa Sra. Aparecida 02/11:Finados 15/11:Proclamação da República 25/12:Natal $ZZFERIADO"

# Verifica se lista ou nao, caso negativo verifica se a data escolhida é feriado
if [ "$listar" = "1" ]; then

# Variável que contem os caracteres de controle para que a listagem
# possa sair formatada corretamente
pulaparacoluna22="\033[22G"

# Pega os dados, coloca 1 por linha, inverte dd/mm para mm/dd,
# ordena, inverte mm/dd para dd/mm
echo $feriados |
sed '
s# \([0-3]\)#\n\1#g
s#\(..\)/\(..\)#\2/\1#g
' |
sort -n |
sed 's#\(..\)/\(..\)#\2/\1#g' |
while read LINHA; do
dia=$(echo $LINHA | cut -d: -f1)
diasemana=$(zzdiadasemana $dia/$ano)
descricao=$(echo $LINHA | cut -d: -f2)
echo -e "$dia $diasemana $pulaparacoluna22 $descricao"
done
else
# Verifica se a data está dentro da lista de feriados
# e imprime o resultado
if zztool grep_var "$data" "$feriados"; then
echo "É feriado: $data/$ano"
else
echo "Não é feriado: $data/$ano"
fi
fi

return 0
}

Change log

r710 by aureliojargas on Mar 29, 2012   Diff
SEGURANÇA: $1 colocado entre aspas na
chamada padrão zzzz -h de todas as
funções.
Go to: 
Sign in to write a code review

Older revisions

r540 by aureliojargas on May 24, 2011   Diff
COMBO: Removidos espaços e tabs
inúteis do fim das linhas, verificados
por utils/alinhamento
r504 by aureliojargas on May 21, 2011   Diff
Campo novo no cabeçalho: Tags. Ainda
presente em poucas funções, a ideia é
marcar todas e depois usar esta
informação no site.
r503 by aureliojargas on May 21, 2011   Diff
COMBO: Todas as funções que lidam com
datas agora usam zztool -e na
validação, simplificando o código e
padronizando as mensagens de erro.
All revisions of this file

File info

Size: 3207 bytes, 97 lines
Powered by Google Project Hosting