guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[announce] GEE/Email version 0.4b0


From: Marco Maggi
Subject: [announce] GEE/Email version 0.4b0
Date: Sat, 8 Dec 2007 18:08:35 +0100

GEE/Email version 0.4b0 is available.

<http://gna.org/projects/gee>
<http://marcomaggi.jottit.com/gee-email/gee-email.html>

This version is tested with Guile 1.8.3.

GEE/Email is  a C language library extension  for Guile, the
GNU's  Ubiquitous Intelligent  Language for  Extensions.  It
implements functions for email processing

The  lexer and  parser for  email addresses  are  a C/Scheme
rewriting of  the C++ code  in librfc822 1.0,  Copyright (c)
1998-2002 by Peter Simons <simons/computer.org>, distributed
under the terms of the GNU General Public License 2.

You can  use GEE/Email  under the terms  of the  GNU General
Public  License version  2, or  (at your  option)  any later
version.

The module is based on GOOPS.

Examples.   To avoid  spam abuse:  in the  following  '@' is
replaced with 'Q'. This script:

| (define-module (this-one)
|   #:use-module (ice-9 pretty-print)
|   #:use-module (oop goops)
|   #:use-module (gee misc email-1)
|   #:duplicates merge-generics)
|
| (pretty-print
|   (email-address-lexer
|     "\"Peter Simons\" <simonsQrhein.de>"))

outputs:

((quoted-string . "\"Peter Simons\"")
 (character . #\<)
 (atom . "simons")
 (character . #\Q)
 (atom . "rhein")
 (character . #\.)
 (atom . "de")
 (character . #\>))

while this script:

| (define-module (this-one)
|   #:use-module (ice-9 receive)
|   #:use-module (oop goops)
|   #:use-module (gee misc email-1)
|   #:duplicates merge-generics)
|
| (receive (the-address rest)
|     (email-address-parse-address
|      (email-address-lexer ": simonsQrhein.de,
marcoQlocalhost ;,
|        Dylan Dog Mailing List : <marcoQthere>, Deep
Address <Qalpha.de,Qbeta.de:marcoQqui>,
|                 \"Marco Si\" <marcoQsi>;"))
|   (let* ((second-group (cadr (elements the-address)))
|          (group's-phrase (car (elements second-group)))
|          (second-mailbox (caddr (elements second-group)))
|          (second's-phrase (phrase second-mailbox))
|          (route-addresses (route-address second-mailbox))
|          (the-route (route route-addresses))
|          (the-first-in-route (car (elements the-route)))
|          (the-addr-spec (addr-spec route-addresses)))
|     (format #t "Second group:~/~/'~A'~%" second-group)
|     (format #t "Group's phrase:~/~/'~A'~%" group's-phrase)
|     (format #t "Second mailbox:~/~/'~A'~%" second-mailbox)
|     (format #t "Second's phrase:~/'~A'~%" second's-phrase)
|     (format #t "Route address:~/~/'~A'~%" route-addresses)
|     (format #t "The route:~/~/'~A'~%" the-route)
|     (format #t "The first in route:~/'~A'~%"
the-first-in-route)
|     (format #t "The address spec:~/'~A'~%" the-addr-spec)))

outputs:

Second group:           'Dylan Dog Mailing List
:<marcoQthere>, Deep Address <Qalpha.de,Qbeta.de:marcoQqui>,
"Marco Si" <marcoQsi>;'
Group's phrase:         'Dylan Dog Mailing List'
Second mailbox:         'Deep Address
<Qalpha.de,Qbeta.de:marcoQqui>'
Second's phrase:        'Deep Address'
Route address:          '<Qalpha.de,Qbeta.de:marcoQqui>'
The route:              'Qalpha.de,Qbeta.de:'
The first in route:     'alpha.de'
The address spec:       'marcoQqui'


I dunno. Maybe  a full Email section is worth  it if we list
the GNU Mailtools bindings, too.

  <DT><B><A HREF="http://gna.org/projects/gee";>GEE/Email</A></B>
  <DD><TABLE>
  <TR><TD><I>description</I></TD>
  <TD>Email processing functions</TD></TR>
  <TR><TD><I>license</I></TD>
  <TD>GNU General Public License version 2, or (at your
      option) any later version.</TD></TR>
  <TR><TD><I>requires</I></TD>
  <TD>Guile 1.8</TD></TR>
  </TABLE><P>

--
Marco Maggi

"Now feel the funk blast!"
Rage Against the Machine - "Calm like a bomb"






reply via email to

[Prev in Thread] Current Thread [Next in Thread]