* mel-ccl.el (mel-ccl-encode-q-generic): New compile-time
[elisp/flim.git] / ew-var.el
index 4d9a0bf..605061a 100644 (file)
--- a/ew-var.el
+++ b/ew-var.el
 ;;; constants.
 
 (defconst ew-token-regexp "[-!#-'*+0-9A-Z^-~]+")
-(defconst ew-encoded-text-regexp0 "[!->@-~]*")
-(defconst ew-encoded-text-regexp1 "[!->@-~]+")
+(defconst ew-encoded-text-regexp "[!->@-~]*")
 
-(defconst ew-encoded-word-regexp0
+(defconst ew-encoded-word-regexp
   (concat (regexp-quote "=?")
           "\\(" ew-token-regexp "\\)"
           (regexp-quote "?")
           "\\(" ew-token-regexp "\\)"
           (regexp-quote "?")
-          "\\(" ew-encoded-text-regexp0 "\\)"
-          (regexp-quote "?=")))
-
-(defconst ew-encoded-word-regexp1
-  (concat (regexp-quote "=?")
-          "\\(" ew-token-regexp "\\)"
-          (regexp-quote "?")
-          "\\(" ew-token-regexp "\\)"
-          (regexp-quote "?")
-          "\\(" ew-encoded-text-regexp1 "\\)"
+          "\\(" ew-encoded-text-regexp "\\)"
           (regexp-quote "?=")))
 
 (defconst ew-anchored-encoded-word-regexp
-  (concat "\\`" ew-encoded-word-regexp0 "\\'"))
+  (concat "\\`" ew-encoded-word-regexp "\\'"))
 
 (defconst ew-b-regexp
   (eval-when-compile
           (regexp-quote "?")
           "\\(" ew-token-regexp "\\)"
           (regexp-quote "?")
-          "\\(" ew-encoded-text-regexp0 "\\)"
+          "\\(" ew-encoded-text-regexp "\\)"
           (regexp-quote "?")
           "\\'"))
 
 
 ;;; utilities for variables.
 
+(defconst ew-option-list
+  '(ew-decode-sticked-encoded-word
+    ew-decode-quoted-encoded-word
+    ew-ignore-75bytes-limit
+    ew-ignore-76bytes-limit
+    ew-permit-sticked-comment
+    ew-permit-sticked-special
+    ew-permit-null-encoded-text))
+
+(defun ew-save-boolean-options ()
+  (let ((tmp 1) (opts ew-option-list) (val 0))
+    (while opts
+      (when (symbol-value (car opts)) (setq val (logior val tmp)))
+      (setq tmp (lsh tmp 1)
+           opts (cdr opts)))
+    val))
+
+(defun ew-restore-boolean-options (val)
+  (let ((tmp 1) (opts ew-option-list))
+    (while opts
+      (set (car opts) (not (zerop (logand val tmp))))
+      (setq tmp (lsh tmp 1)
+           opts (cdr opts)))))
+
 (defun ew-dynamic-options ()
   (cons
    ew-default-mime-charset
-   (logior
-    (if ew-decode-sticked-encoded-word 1 0)
-    (if ew-decode-quoted-encoded-word 2 0)
-    (if ew-ignore-75bytes-limit 4 0)
-    (if ew-ignore-76bytes-limit 8 0)
-    (if ew-permit-sticked-comment 16 0)
-    (if ew-permit-sticked-special 32 0)
-    (if ew-remove-bare-crlf 64 0)
-    (if ew-permit-null-encoded-text 128 0)
-    )))
+   (ew-save-boolean-options)))
+