Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.lang.forth    |    Forth programmers eat a lot of Bratwurst    |    117,927 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 117,514 of 117,927    |
|    dxf to B. Pym    |
|    Re: Parsing timestamps?    |
|    30 Jul 25 03:35:09    |
   
   From: dxforth@gmail.com   
      
   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   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca