* ew-bq.el (ew-ccl-decode-b-0-table): Use `if' instead of `cond'
[elisp/flim.git] / ew-var.el
1 (provide 'ew-var)
2
3 ;;; user customizable variables.
4
5 (defvar ew-decode-sticked-encoded-word nil)
6 (defvar ew-decode-quoted-encoded-word nil)
7 (defvar ew-ignore-75bytes-limit nil)
8 (defvar ew-ignore-76bytes-limit nil)
9 (defvar ew-permit-sticked-comment nil)
10 (defvar ew-permit-sticked-special nil)
11 (defvar ew-permit-null-encoded-text nil) ; affect when loading time.
12
13 (defvar ew-remove-bare-crlf nil)
14 (defvar ew-default-mime-charset 'x-ctext)
15
16 ;;;
17 (defvar ew-decode-field-syntax-alist
18 '((from                 ew-scan-unibyte-std11 . ew:tag-mailbox+)
19   (sender               ew-scan-unibyte-std11 . ew:tag-mailbox)
20   (to                   ew-scan-unibyte-std11 . ew:tag-address+)
21   (resent-to            ew-scan-unibyte-std11 . ew:tag-address+)
22   (cc                   ew-scan-unibyte-std11 . ew:tag-address+)
23   (resent-cc            ew-scan-unibyte-std11 . ew:tag-address+)
24   (bcc                  ew-scan-unibyte-std11 . ew:tag-address*)
25   (resent-bcc           ew-scan-unibyte-std11 . ew:tag-address*)
26   (message-id           ew-scan-unibyte-std11)
27   (resent-message-id    ew-scan-unibyte-std11)
28   (in-reply-to          ew-scan-unibyte-std11 . ew:tag-phrase-msg-id*)
29   (references           ew-scan-unibyte-std11 . ew:tag-phrase-msg-id*)
30   (keywords             ew-scan-unibyte-std11 . ew:tag-phrase*)
31   (subject              ew-scan-unibyte-unstructured)
32   (comments             ew-scan-unibyte-unstructured)
33   (encrypted            ew-scan-unibyte-std11)
34   (date                 ew-scan-unibyte-std11)
35   (reply-to             ew-scan-unibyte-std11 . ew:tag-address+)
36   (received             ew-scan-unibyte-std11)
37   (resent-reply-to      ew-scan-unibyte-std11 . ew:tag-address+)
38   (resent-from          ew-scan-unibyte-std11 . ew:tag-mailbox+)
39   (resent-sender        ew-scan-unibyte-std11 . ew:tag-mailbox)
40   (resent-date          ew-scan-unibyte-std11)
41   (return-path          ew-scan-unibyte-std11)
42   (mime-version         ew-scan-unibyte-std11)
43   (content-type         ew-scan-unibyte-mime)
44   (content-transfer-encoding    ew-scan-unibyte-mime)
45   (content-id           ew-scan-unibyte-std11)
46   (content-description  ew-scan-unibyte-unstructured)
47   (content-disposition  ew-scan-unibyte-mime)
48   (approved             ew-scan-unibyte-std11 . ew:tag-address+)
49 ))
50
51 (defvar ew-decode-field-default-syntax '(ew-scan-unibyte-unstructured))
52
53 (defvar ew-parse-error-sit-for-seconds 0)
54
55 ;;; constants.
56
57 (defconst ew-token-regexp "[-!#-'*+0-9A-Z^-~]+")
58 (defconst ew-encoded-text-regexp
59   (if ew-permit-null-encoded-text
60       "[!->@-~]*"
61     "[!->@-~]+"))
62
63 (defconst ew-encoded-word-regexp
64   (concat (regexp-quote "=?")
65           "\\(" ew-token-regexp "\\)"
66           (regexp-quote "?")
67           "\\(" ew-token-regexp "\\)"
68           (regexp-quote "?")
69           "\\(" ew-encoded-text-regexp "\\)"
70           (regexp-quote "?=")))
71
72 (defconst ew-anchored-encoded-word-regexp
73   (concat "\\`" ew-encoded-word-regexp "\\'"))
74
75 (defconst ew-b-regexp
76   (eval-when-compile
77     (concat "\\`\\("
78             "[A-Za-z0-9+/]"
79             "[A-Za-z0-9+/]"
80             "[A-Za-z0-9+/]"
81             "[A-Za-z0-9+/]"
82             "\\)*"
83             "\\("
84             "[A-Za-z0-9+/]"
85             "[A-Za-z0-9+/]"
86             "\\(==\\|[A-Za-z0-9+/]=\\)"
87             "\\)?"
88             "\\'")))
89
90 (defconst ew-q-regexp
91   "\\`\\([^=?]\\|=[0-9A-Fa-f][0-9A-Fa-f]\\)*\\'")
92
93 (defconst ew-quoting-char ?+)
94 (defconst ew-quoting-chars-regexp
95   (concat (regexp-quote (char-to-string ew-quoting-char)) "*"))
96
97 (defconst ew-type2-regexp
98   (concat (regexp-quote "=?")
99           "\\(" ew-token-regexp "\\)"
100           (regexp-quote "?")
101           "\\(" ew-token-regexp "\\)"
102           (regexp-quote "?")
103           "\\(" ew-encoded-text-regexp "\\)"
104           (regexp-quote "?")
105           "\\'"))
106
107 (defconst ew-byte-decoder-alist
108   '(("B" . ew-decode-b)
109     ("Q" . ew-decode-q)))
110
111 (defconst ew-byte-checker-alist
112   '(("B" . ew-b-check)
113     ("Q" . ew-q-check)))
114
115 ;;; utilities for variables.
116
117 (defun ew-dynamic-options ()
118   (cons
119    ew-default-mime-charset
120    (logior
121     (if ew-decode-sticked-encoded-word 1 0)
122     (if ew-decode-quoted-encoded-word 2 0)
123     (if ew-ignore-75bytes-limit 4 0)
124     (if ew-ignore-76bytes-limit 8 0)
125     (if ew-permit-sticked-comment 16 0)
126     (if ew-permit-sticked-special 32 0)
127     (if ew-remove-bare-crlf 64 0)
128     (if ew-permit-null-encoded-text 128 0)
129     )))