3164 (insert (my-html-charref-from-string (delete-and-extract-region begin end)))) |
3164 (insert (my-html-charref-from-string (delete-and-extract-region begin end)))) |
3165 (my-html-charref-from-string (buffer-substring begin end)) |
3165 (my-html-charref-from-string (buffer-substring begin end)) |
3166 )) |
3166 )) |
3167 |
3167 |
3168 (defun my-html-charref-to-string (html) |
3168 (defun my-html-charref-to-string (html) |
|
3169 "Return string with replaced decimal/hex and string charrefs by |
|
3170 correcponding UTF-8 symbol." |
3169 (let (str) |
3171 (let (str) |
3170 (with-temp-buffer |
3172 (with-temp-buffer |
3171 (insert html) |
3173 (insert html) |
3172 (goto-char (point-min)) |
3174 (goto-char (point-min)) |
3173 (while (search-forward-regexp "&\\(?:#\\([[:digit:]]+\\)\\|\\(lt\\|gt\\|amp\\)\\);" nil t) |
3175 (while (search-forward-regexp "&\\(?:#\\([[:digit:]]+\\)\\|#x\\([[:xdigit:]]+\\)\\|\\(lt\\|gt\\|amp\\|quot\\)\\);" nil t) |
3174 (setq str (or (match-string 1) (match-string 2))) |
3176 (setq str (or (match-string 1) (match-string 2) (match-string 3))) |
3175 (cond |
3177 (cond |
3176 ((equal str "lt") |
3178 ((match-string 1) |
3177 (replace-match "<" t t)) |
3179 (when (> (string-to-number str 10) 0) |
3178 ((equal str "gt") |
3180 (replace-match (string (string-to-number str 10)) t t))) |
3179 (replace-match ">" t t)) |
3181 ((match-string 2) |
3180 ((equal str "amp") |
3182 (when (> (string-to-number str 16) 0) |
3181 (replace-match "&" t t)) |
3183 (replace-match (string (string-to-number str 16)) t t))) |
3182 ((> (string-to-number str) 0) |
3184 (t |
3183 (replace-match (string (string-to-number str 10)) t t)))) |
3185 (cond |
|
3186 ((equal str "lt") |
|
3187 (replace-match "<" t t)) |
|
3188 ((equal str "gt") |
|
3189 (replace-match ">" t t)) |
|
3190 ((equal str "quot") |
|
3191 (replace-match "\"" t t)) |
|
3192 ((equal str "amp") |
|
3193 (replace-match "&" t t)))) )) |
3184 (buffer-string)))) |
3194 (buffer-string)))) |
3185 |
3195 |
3186 (defun my-html-charref-unescape-region (begin end &optional prefix) |
3196 (defun my-html-charref-unescape-region (begin end &optional prefix) |
3187 (interactive "r\nP") |
3197 (interactive "r\nP") |
3188 (if prefix |
3198 (if prefix |