Wiki
Download
Manual
Eggs
API
Tests
Bugs
show
edit
history
You can edit this page using
wiki syntax
for markup.
Article contents:
== Outdated egg! This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for [[/eggref/5/internet-timestamp|the CHICKEN 5 version of this egg]], if it exists. If it does not exist, there may be equivalent functionality provided by another egg; have a look at the [[https://wiki.call-cc.org/chicken-projects/egg-index-5.html|egg index]]. Otherwise, please consider porting this egg to the current version of CHICKEN. [[tags: eggs]] [[toc:]] == internet-timestamp === Description The {{internet-timestamp}} library contains a procedure for parsing of Internet timestamps [[http://tools.ietf.org/html/rfc3339|RFC 3339]]. It is intended to conform closely to the ABNF grammar in the RFC. See also [[rfc3339]]. === 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. <enscript highlight="scheme"> (require-extension typeclass internet-timestamp) (require-library abnf) (import (only abnf <CoreABNF> CharLex->CoreABNF <Input> <Token> <CharLex> Input->Token Token->CharLex make-<Input> )) (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-<CharLex>)) (define char-list-<InetTimestamp> (CoreABNF->InetTimestamp char-list-<CoreABNF> )) (define parser (parser char-list-<InetTimestamp>)) </enscript> <procedure>(parser <InetTimestamp) => (LAMBDA TEXT) => TS</procedure><br> 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) => LIST</procedure><br> Returns an alist representation of a timestamp: ((date (YEAR MONTH DAY)) (time (HOUR MINUTE SECOND FRAC)) (offset (OFFSET))) === Requires * [[abnf]] * [[typeclass]] === 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/>.
Description of your changes:
I would like to authenticate
Authentication
Username:
Password:
Spam control
What do you get when you subtract 13 from 5?