Groups | Search | Server Info | Keyboard shortcuts | Login | Register
Groups > comp.lang.forth > #134108
| Date | 2025-07-30 03:35 +1000 |
|---|---|
| Subject | Re: Parsing timestamps? |
| Newsgroups | comp.lang.forth |
| References | <1f433fabcb4d053d16cbc098dedc6c370608ac01@i2pn2.org> <7e21117d37c506cccd8e79323c416fd1@www.novabbs.com> <1021bsd$31o0d$1@dont-email.me> <106ao37$2n711$1@dont-email.me> |
| From | dxf <dxforth@gmail.com> |
| Message-ID | <6889064d$1@news.ausics.net> (permalink) |
| Organization | Ausics - https://newsgroups.ausics.net |
On 30/07/2025 1:07 am, B. Pym wrote:
> ...
> : get-number ( accum adr len -- accum' adr' len' )
> { adr len }
> 0. adr len >number { adr' len' }
> len len' =
> if
> 2drop adr len 1 /string
> else
> d>s swap 60 * +
> adr' len'
> then ;
>
> : parse-time ( adr len -- seconds)
> 0 -rot
> begin
> dup
> while
> get-number
> repeat
> 2drop ;
>
> s" foo-bar" parse-time . 0
> s" foo55bar" parse-time . 55
> s" foo 1 bar 55 zoo" parse-time . 155
> s" and9foo 1 bar 55 zoo" parse-time . 32515
: digit? ( c -- f ) 48 58 within ;
: scan-digit ( a u -- a' u' )
begin dup while
over c@ digit? 0= while 1 /string
repeat then ;
: /number ( a u -- a' u' u2 )
0. 2swap >number 2swap drop ;
: parse-time ( adr len -- seconds)
0 begin >r scan-digit dup while
/number r> 60 * +
repeat 2drop r> ;
s" foo-bar" parse-time . 0 ok
s" foo55bar" parse-time . 55 ok
s" foo 1 bar 55 zoo" parse-time . 115 ok
s" and9foo 1 bar 55 zoo" parse-time . 32515 ok
Back to comp.lang.forth | Previous | Next — Previous in thread | Find similar
Re: Parsing timestamps? "B. Pym" <Nobody447095@here-nor-there.org> - 2025-07-29 15:07 +0000 Re: Parsing timestamps? "B. Pym" <Nobody447095@here-nor-there.org> - 2025-07-29 15:22 +0000 Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2025-07-30 03:35 +1000
csiph-web