[go: up one dir, main page]

File: time.chh

package info (click to toggle)
chpp 0.3.2-3
  • links: PTS
  • area: main
  • in suites: slink
  • size: 3,024 kB
  • ctags: 5,131
  • sloc: ansic: 29,956; cpp: 575; sh: 500; makefile: 314; yacc: 265; asm: 261; lex: 64
file content (79 lines) | stat: -rw-r--r-- 3,435 bytes parent folder | download | duplicates (2)
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
#ifndef __TIME_CHH__
#define __TIME_CHH__
#include list.chh
%<_abbrMonthNames=%list(dummy,Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)>\
%<_fullMonthNames=%list(dummy,January,February,March,April,May,June,July,
                        August,September,October,November,December)>\
\
%define(timeFromString,pattern,str,
%locals(numreg,regs,
        daynum,dayfrm,monthnum,monthfrm,yearnum,yearfrm,
        hournum,hourfrm,minutenum,minutefrm,secondnum,secondfrm,
    %<numreg=1>\
    %<regs=%list()>\
    %<dayfrm=->%<monthfrm=->%<yearfrm=->\
    %<pattern=%sgsub([.?+*\[\]],%pattern,%lambda(r,\%r[0]))>\
    %<pattern=^%sgsub(%'$([$dmbBYHMS])',%pattern,%lambda(r,
        %case(%r[1],
              %list($),$,
              %list(d),%'([0-9]+)'%<daynum=%numreg>%<dayfrm=d>%<numreg=%[numreg+1]>,
              %list(m),%'([0-9]+)'%<monthnum=%numreg>%<monthfrm=m>%<numreg=%[numreg+1]>,
              %list(b),%'([A-Za-z]+)'%<monthnum=%numreg>%<monthfrm=b>%<numreg=%[numreg+1]>,
              %list(B),%'([A-Za-z]+)'%<monthnum=%numreg>%<monthfrm=B>%<numreg=%[numreg+1]>,
              %list(Y),%'([0-9]+)'%<yearnum=%numreg>%<yearfrm=Y>%<numreg=%[numreg+1]>,
              %list(H),%'([0-9]+)'%<hournum=%numreg>%<hourfrm=H>%<numreg=%[numreg+1]>,
              %list(M),%'([0-9]+)'%<minutenum=%numreg>%<minutefrm=M>%<numreg=%[numreg+1]>,
              %list(S),%'([0-9]+)'%<secondnum=%numreg>%<secondfrm=S>%<numreg=%[numreg+1]>,
              else,%error(Illegal specifier '%r[1]' in macro 'timeFromString')
        )))$>\
    %if(%[%smatch(%pattern,%str,%&regs) != -1],
        %locals(result,day,month,year,
            %<result=%hash()>\
            %if(%equal(%yearfrm,Y),
                %<result{year}=%regs[%yearnum]>
            )\
            %if(%equal(%monthfrm,m),
                %<result{month}=%regs[%monthnum]>
            ,%if(%equal(%monthfrm,b),
                %<result{month}=%listSearch(%&_abbrMonthNames,
                                            %lambda(m,%equal(%m,%regs[%monthnum])))>
            ,%if(%equal(%monthfrm,B),
                %<result{month}=%listSearch(%&_fullMonthNames,
                                            %lambda(m,%equal(%m,%regs[%monthnum])))>
            )))\
            %if(%equal(%dayfrm,d),
                %<result{day}=%regs[%daynum]>
            )\
            %if(%equal(%hourfrm,H),
                %<result{hour}=%regs[%hournum]>
            )\
            %if(%equal(%minutefrm,M),
                %<result{minute}=%regs[%minutenum]>
            )\
            %if(%equal(%secondfrm,S),
                %<result{second}=%regs[%secondnum]>
            )\
            %result
        )
    ,
        %error(Wrong time format in macro 'timeFromString')
    )
))\
\
%define(timeToString,pattern,time,
    %sgsub(%'$(.)',%pattern,
            %lambda(r,
                %cond(%equal(%r[1],$),$,
                      %equal(%r[1],d),%time{day},
                      %equal(%r[1],m),%time{month},
                      %equal(%r[1],b),%_abbrMonthNames[%time{month}],
                      %equal(%r[1],B),%_fullMonthNames[%time{month}],
                      %equal(%r[1],Y),%time{year},
                      %equal(%r[1],H),%time{hour},
                      %equal(%r[1],M),%time{minute},
                      %equal(%r[1],S),%time{second},
                      else,%error(Illegal specifier '%r[1]' in macro 'timeToString')
                )
            ))
)\
#endif