You are looking at historical revision 24017 of this page. It may differ significantly from its current revision.
internet-timestamp
Description
The internet-timestamp library contains a procedure for parsing of Internet timestamps RFC 3339. It is intended to conform closely to the ABNF grammar in the RFC.
Timestamp record type
(define-record-type ts (make-ts date time offset) ;; constructor ts? ;; predicate (date ts-date ) ;; accessors (time ts-time ) (offset ts-offset ) )
The internet-timestamp library also defines a record printer for the above record type, which prints timestamp entries in the format specified by the RFC.
Library Procedures
Parsing procedures
The parsing procedures of this library are provided as fields of the <InetTimestamp> typeclass. Please see the typeclass library for information on type classes.
The <InetTimestamp> typeclass is intended to provide abstraction over different kinds of input sequences, e.g. character lists, strings, streams, etc. <InetTimestamp> inherits from <CoreABNF>, which provides the core parsing primitives used to build the timestamp parser (see the abnf library for more information).
The following example illustrates the creation of an instance of <InetTimestamp> specialized for character lists.
(require-extension typeclass internet-timestamp abnf) (define char-list-<Input> (make-<Input> null? car cdr)) (define char-list-<Token> (Input->Token char-list-<Input>)) (define char-list-<CharLex> (Token->CharLex char-list-<Token>)) (define char-list-<CoreABNF> (CharLex->CoreABNF char-list-<Token> char-list-<CharLex>)) (define char-list-<InetTimestamp> (CoreABNF->InetTimestamp char-list-<CoreABNF> )) (define parser (parser char-list-<InetTimestamp>))[procedure] (parser <InetTimestamp) => (LAMBDA TEXT) => TS
Once applied to an instance of the InetTimestamp typeclass, parser returns a procedure that parses Internet timestamp text and returns a record of type ts.
Formatting procedures
[procedure] (ts->list TS) => LISTReturns an alist representation of a timestamp:
((date (YEAR MONTH DAY)) (time (HOUR MINUTE SECOND FRAC)) (offset (OFFSET)))
Requires
Version History
- 3.1 Compatibility with improved CharLex->CoreABNF constructor
- 3.0 Compatibility with abnf 5
- 2.0 Implemented typeclass interface
- 1.0 Initial Release
License
Copyright 2009-2011 Ivan Raikov. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. A full copy of the GPL license can be found at <http://www.gnu.org/licenses/>.