]> git.eshelyaron.com Git - emacs.git/commitdiff
Add new function dom-remove-attribute
authorLars Ingebrigtsen <larsi@gnus.org>
Thu, 30 Apr 2020 04:05:17 +0000 (06:05 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Thu, 30 Apr 2020 04:05:26 +0000 (06:05 +0200)
* doc/lispref/text.texi (Document Object Model): Document it.

* lisp/dom.el (dom-remove-attribute): Add new function.

doc/lispref/text.texi
etc/NEWS
lisp/dom.el
test/lisp/dom-tests.el

index 58424a4231ba7372d0c1498d9d3dcffdee9c4943..9317362a70acbf3f3466ac59ab9cfbd398d2add3 100644 (file)
@@ -5161,6 +5161,9 @@ The following are functions for altering the @acronym{DOM}.
 @item dom-set-attribute @var{node} @var{attribute} @var{value}
 Set the @var{attribute} of the node to @var{value}.
 
+@item dom-remove-attribute @var{node} @var{attribute}
+Remove @var{attribute} from @var{node}.
+
 @item dom-append-child @var{node} @var{child}
 Append @var{child} as the last child of @var{node}.
 
index 025d5c14a780f2278a58ba6ca7e35b40b4827457..c4911726a85d5a4cd0dcbdc6bfa1f4cc09936d9d 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -358,6 +358,9 @@ optional argument specifying whether to follow symbolic links.
 ** 'parse-time-string' can now parse ISO 8601 format strings,
 such as "2020-01-15T16:12:21-08:00".
 
++++
+** The new function 'dom-remove-attribute' has been added.
+
 ---
 ** 'make-network-process', 'make-serial-process' :coding behavior change.
 Previously, passing ":coding nil" to either of these functions would
index 34df0e9af4c765aece5bf82cacc6788b1ae040ad..7ff9e07b729b7308fbd0aaece920d196c45c83f7 100644 (file)
        (setcdr old value)
       (setcar (cdr node) (nconc (cadr node) (list (cons attribute value)))))))
 
+(defun dom-remove-attribute (node attribute)
+  "Remove ATTRIBUTE from NODE."
+  (setq node (dom-ensure-node node))
+  (when-let ((old (assoc attribute (cadr node))))
+    (setcar (cdr node) (delq old (cadr node)))))
+
 (defmacro dom-attr (node attr)
   "Return the attribute ATTR from NODE.
 A typical attribute is `href'."
index d44851eb13b0c94411313f8824c8e5ad678bdf9b..eb15500d84cc7ddb49365005fadd82733c2fc780 100644 (file)
     (dom-set-attribute dom attr value)
     (should (equal (dom-attr dom attr) value))))
 
+(ert-deftest dom-tests-remove-attribute ()
+  (let ((dom `(body ((foo . "bar") (zot . "foobar")))))
+    (should (equal (dom-attr dom 'foo) "bar"))
+    (dom-remove-attribute dom 'foo)
+    (should (equal (dom-attr dom 'foo) nil))
+    (should (equal dom '(body ((zot . "foobar")))))))
+
 (ert-deftest dom-tests-attr ()
   (let ((dom (dom-tests--tree)))
     (should-not (dom-attr dom 'id))