calendar.parser,robots: hhmm>timestamp -> hhmm>duration

Better to parse it as a duration because it is not a valid timestamp.
char-rename
Björn Lindqvist 2017-01-04 09:10:15 +01:00
parent 2895d5e095
commit 3bbc784fad
4 changed files with 14 additions and 8 deletions

View File

@ -44,6 +44,13 @@ IN: calendar.parser.tests
time- 1 seconds before? time- 1 seconds before?
] unit-test ] unit-test
! hhmm>duration
{
T{ duration { hour 10 } { minute 20 } }
} [
"1020" hhmm>duration
] unit-test
! parse-rfc822-gmt-offset ! parse-rfc822-gmt-offset
{ T{ duration f 0 0 0 0 0 0 } } [ { T{ duration f 0 0 0 0 0 0 } } [
"GMT" parse-rfc822-gmt-offset "GMT" parse-rfc822-gmt-offset

View File

@ -27,11 +27,6 @@ ERROR: invalid-timestamp-format ;
: read-sp ( -- token ) " " read-token ; : read-sp ( -- token ) " " read-token ;
: hhmm>timestamp ( hhmm -- timestamp )
[
0 0 0 read-00 read-00 0 instant <timestamp>
] with-string-reader ;
: signed-gmt-offset ( dt ch -- dt' ) : signed-gmt-offset ( dt ch -- dt' )
{ { CHAR: + [ 1 ] } { CHAR: - [ -1 ] } } case time* ; { { CHAR: + [ 1 ] } { CHAR: - [ -1 ] } } case time* ;
@ -181,3 +176,7 @@ MACRO: attempt-all-quots ( quots -- quot )
: ymd>timestamp ( str -- timestamp ) : ymd>timestamp ( str -- timestamp )
[ (ymd>timestamp) ] with-string-reader ; [ (ymd>timestamp) ] with-string-reader ;
! Duration parsing
: hhmm>duration ( hhmm -- duration )
[ instant read-00 >>hour read-00 >>minute ] with-string-reader ;

View File

@ -26,8 +26,8 @@ IN: robots.tests
} }
{ visit-time { visit-time
{ {
T{ timestamp { hour 2 } } T{ duration { hour 2 } }
T{ timestamp { hour 5 } } T{ duration { hour 5 } }
} }
} }
{ request-rate 1 } { request-rate 1 }

View File

@ -63,7 +63,7 @@ visit-time request-rate crawl-delay unknowns ;
{ "crawl-delay" [ string>number >>crawl-delay ] } { "crawl-delay" [ string>number >>crawl-delay ] }
{ "request-rate" [ string>number >>request-rate ] } { "request-rate" [ string>number >>request-rate ] }
{ {
"visit-time" [ "-" split1 [ hhmm>timestamp ] bi@ 2array "visit-time" [ "-" split1 [ hhmm>duration ] bi@ 2array
>>visit-time >>visit-time
] } ] }
[ pick unknowns>> push-at ] [ pick unknowns>> push-at ]