gnus-art.el (gnus-mime-buttonize-attachments-in-header): Improve criterion that finds...
[gnus] / lisp / html2text.el
index cb4d7dd..78cecd9 100644 (file)
@@ -1,25 +1,23 @@
-;;; html2text.el --- a simple html to plain text converter
+;;; html2text.el --- a simple html to plain text converter -*- coding: utf-8 -*-
 
 
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2014 Free Software Foundation, Inc.
 
 ;; Author: Joakim Hove <hove@phys.ntnu.no>
 
 ;; This file is part of GNU Emacs.
 
 
 ;; Author: Joakim Hove <hove@phys.ntnu.no>
 
 ;; This file is part of GNU Emacs.
 
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
 
 ;; GNU Emacs 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
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
 
 ;;; Commentary:
 
     ("&ndash;" . "-")
     ("&permil;" . "%%")
     ("&plusmn;" . "+-")
     ("&ndash;" . "-")
     ("&permil;" . "%%")
     ("&plusmn;" . "+-")
-    ("&pound;" . "£")
+    ("&pound;" . "£")
     ("&quot;" . "\"")
     ("&raquo;" . ">>")
     ("&rdquo" . "\"")
     ("&reg;" . "(R)")
     ("&rsaquo;" . ")")
     ("&rsquo;" . "'")
     ("&quot;" . "\"")
     ("&raquo;" . ">>")
     ("&rdquo" . "\"")
     ("&reg;" . "(R)")
     ("&rsaquo;" . ")")
     ("&rsquo;" . "'")
-    ("&sect;" . "§")
+    ("&sect;" . "§")
     ("&sup1;" . "^1")
     ("&sup2;" . "^2")
     ("&sup3;" . "^3")
     ("&sup1;" . "^1")
     ("&sup2;" . "^2")
     ("&sup3;" . "^3")
@@ -125,7 +123,7 @@ If this list contains the element \"font\".")
 This is an alist where each dotted pair consists of a tag, and then
 the name of a function to be called when this tag is found.  The
 function is called with the arguments p1, p2, p3 and p4. These are
 This is an alist where each dotted pair consists of a tag, and then
 the name of a function to be called when this tag is found.  The
 function is called with the arguments p1, p2, p3 and p4. These are
-demontrated below:
+demonstrated below:
 
 \"<b> This is bold text </b>\"
  ^   ^                 ^    ^
 
 \"<b> This is bold text </b>\"
  ^   ^                 ^    ^
@@ -195,7 +193,7 @@ formatting, and then moved afterward.")
      ;; size=3
      ((string-match "[^ ]=[^ ]" prev)
       (let ((attr  (nth 0 (split-string prev "=")))
      ;; size=3
      ((string-match "[^ ]=[^ ]" prev)
       (let ((attr  (nth 0 (split-string prev "=")))
-           (value (nth 1 (split-string prev "="))))
+           (value (substring prev (1+ (string-match "=" prev)))))
        (setq attr-list (cons (list attr value) attr-list))))
      ;; size= 3
      ((string-match "[^ ]=\\'" prev)
        (setq attr-list (cons (list attr value) attr-list))))
      ;; size= 3
      ((string-match "[^ ]=\\'" prev)
@@ -206,7 +204,7 @@ formatting, and then moved afterward.")
        ;; size=3
        ((string-match "[^ ]=[^ ]" this)
        (let ((attr  (nth 0 (split-string this "=")))
        ;; size=3
        ((string-match "[^ ]=[^ ]" this)
        (let ((attr  (nth 0 (split-string this "=")))
-             (value (nth 1 (split-string this "="))))
+             (value (substring this (1+ (string-match "=" this)))))
          (setq attr-list (cons (list attr value) attr-list))))
        ;; size =3
        ((string-match "\\`=[^ ]" this)
          (setq attr-list (cons (list attr value) attr-list))))
        ;; size =3
        ((string-match "\\`=[^ ]" this)
@@ -360,7 +358,8 @@ formatting, and then moved afterward.")
     (delete-region p1 p4)
     (when href
       (goto-char p1)
     (delete-region p1 p4)
     (when href
       (goto-char p1)
-      (insert (substring href 1 -1 ))
+      (insert (if (string-match "\\`['\"].*['\"]\\'" href)
+                 (substring href 1 -1) href))
       (put-text-property p1 (point) 'face 'bold))))
 
 ;;
       (put-text-property p1 (point) 'face 'bold))))
 
 ;;
@@ -388,7 +387,7 @@ formatting, and then moved afterward.")
        (forward-line 1)
        (end-of-line)
        ;; refill-stop should ideally be adjusted to
        (forward-line 1)
        (end-of-line)
        ;; refill-stop should ideally be adjusted to
-       ;; accomodate the "<br>" strings which are removed
+       ;; accommodate the "<br>" strings which are removed
        ;; between refill-start and refill-stop.  Can simply
        ;; be returned from my-replace-string
        (setq refill-stop (+ (point)
        ;; between refill-start and refill-stop.  Can simply
        ;; be returned from my-replace-string
        (setq refill-stop (+ (point)
@@ -411,7 +410,7 @@ fashion, quite close to pure guess-work. It does work in some cases though."
   (while (re-search-forward "^<br>$" nil t)
     (delete-region (match-beginning 0) (match-end 0)))
   ;; Removing lonely <br> on a single line, if they are left intact we
   (while (re-search-forward "^<br>$" nil t)
     (delete-region (match-beginning 0) (match-end 0)))
   ;; Removing lonely <br> on a single line, if they are left intact we
-  ;; dont have any paragraphs at all.
+  ;; don't have any paragraphs at all.
   (goto-char (point-min))
   (while (not (eobp))
     (let ((p1 (point)))
   (goto-char (point-min))
   (while (not (eobp))
     (let ((p1 (point)))
@@ -510,5 +509,5 @@ See the documentation for that variable."
 ;; </Interactive functions>
 ;;
 (provide 'html2text)
 ;; </Interactive functions>
 ;;
 (provide 'html2text)
-;;; arch-tag: e9e57b79-35d4-4de1-a647-e7e01fe56d1e
+
 ;;; html2text.el ends here
 ;;; html2text.el ends here