home bbs files messages ]

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