Age | Commit message (Collapse) | Author |
|
Prior to this, parse-email would accept email in the form of a
string. A string is constrained to use the same encoding for all its
characters whereas an email can have characters encoded using
different encoding schemes. Therefore, it is more correct that
parse-email deals with bytevectors instead of strings.
* email/utils.scm (read-bytes-till): New function.
* email/email.scm (body->mime-entities, email->headers+body,
decode-body): Deal with emails as bytevectors instead of strings.
(parse-mime-entity): Rename text argument to bv.
(parse-email, parse-email-body): Overload to handle input in the form
of a string or bytevector.
* doc/guile-email.texi (Parsing e-mail): Document overloading of
parse-email and parse-email-body.
* tests/email.scm ("handle truncated multipart message gracefully"):
Deal in bytevectors instead of strings.
("email with 8 bit encoding and non UTF-8 charset", "multipart email
with a 8 bit encoding and non UTF-8 charset part"): New tests.
* tests/email-with-8bit-encoding-and-non-utf8-charset,
tests/multipart-email-with-a-8bit-encoding-and-non-utf8-charset-part:
New files.
Reported-by: Jack Hill <jackhill@jackhill.us>
|
|
Prior to this, MIME encoded words in the Subject header were not
decoded.
* email/email.scm (parse-email-headers): Decode MIME encoded words in
Subject header.
* tests/email.scm ("decode MIME encoded words in Subject header"): New
test.
Reported-by: Ricardo Wurmus <rekado@elephly.net>
|
|
* tests/email.scm ("decode MIME encoded phrases that contain multiple
MIME encoded words each with their own encoding"): New test.
|
|
* tests/email.scm ("decode MIME encoded word: wikipedia example",
"decode MIME encoded phrases that mix ASCII text and MIME encoded
words"): New tests.
|
|
* tests/email.scm ("parse name-addr email address", "parse addr-spec
email address", "parse emacs message mode parens style email
address"): New tests.
|
|
* tests/email.scm: New file.
* Makefile.am (SCM_TESTS): Register it.
|
|
* tests/quoted-printable.scm (q-encoding random bytevector:
q-encoding-encode and q-encoding-decode are inverses of each other):
New test.
|
|
* email/quoted-printable.scm (%q-encoding-literal-char-set,
%quoted-printable-literal-char-set): New variables.
(quoted-printable-encode): Move core encoding code to ...
(quoted-printable-style-encode): ... this new function.
(q-encoding-decode): Call quoted-printable-style-encode with the
appropriate literal-char-set instead of calling
quoted-printable-encode.
* tests/quoted-printable.scm (q-encoding of special characters): Add
to check for this bug.
|
|
* tests/quoted-printable.scm (quoted-printable-escape-encode-char):
New function.
("quoted-printable encoding of ="): Rename to ...
("quoted-printable encoding of special characters"): ... this. Extend
to test encoding of #\return and #\newline as well.
|
|
* tests/quoted-printable.scm (random-bytevector,
each-line-has-a-maximum-of-76-characters?,
string-has-only-quoted-printable-valid-characters?): New functions.
(quoted-printable random bytevector: quoted-printable-encode and
quoted-printable-decode are inverses of each other, quoted-printable
random bytevector: encoded output should not be more than 76 columns
wide, quoted-printable random bytevector: encoded output must only
consist of printable ASCII characters): New tests.
|
|
* email/quoted-printable.scm (quoted-printable-encode): Encode #\=
with its ASCII code.
* test/quoted-printable.scm (quoted-printable-encoding of =): Add test
to check for this bug.
|
|
* email/quoted-printable.scm (q-encoding-encode): New function.
* tests/quoted-printable.scm (q-encoding wikipedia example): Rename to
...
(q-encoding wikipedia example: decoding): ... this.
(q-encoding wikipedia example: encoding): New test.
|
|
* build-aux/test-driver.scm, email/base64.scm, email/email.scm,
email/quoted-printable.scm, email/utils.scm,
tests/quoted-printable.scm: Untabify and re-indent.
|
|
* email/quoted-printable.scm (quoted-printable-encode): New function.
* tests/quoted-printable.scm (quoted-printable wikipedia example):
Rename to ...
(quoted-printable wikipedia example: decoding): ... this.
(quoted-printable wikipedia example: encoding, quoted-printable
wikipedia example: encoded output should not be more than 76 columns
wide): New tests.
|
|
* tests/quoted-printable.scm ("wikipedia example"): Rename to ...
("quoted-printable wikipedia example"): ... this.
("q-encoding wikipedia example"): New test.
|
|
* build-aux/test-driver.scm: New file.
* tests/quoted-printable.scm: New file.
* Makefile.am (TEST_EXTENSIONS, SCM_TESTS, TESTS, SCM_LOG_DRIVER): New
variables.
(EXTRA_DIST): Register new files for distribution.
|