aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Magne Ingebrigtsen2016-06-27 22:20:29 +0200
committerLars Magne Ingebrigtsen2016-06-27 22:20:29 +0200
commit54fe3b6ec0557941c5759523b36bfdec21003f77 (patch)
tree38ff9783ea0ff9894e627871c7b627fefaa2be51
parent44caa96dc5c16cbc4ee1bb26ec880af2e2ecf9f8 (diff)
downloademacs-54fe3b6ec0557941c5759523b36bfdec21003f77.tar.gz
emacs-54fe3b6ec0557941c5759523b36bfdec21003f77.zip
Add new function dom-remove-node
* doc/lispref/text.texi (Document Object Model): Document dom-remove-node. * lisp/dom.el (dom-remove-node): New function.
-rw-r--r--doc/lispref/text.texi3
-rw-r--r--lisp/dom.el11
2 files changed, 14 insertions, 0 deletions
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index 43d4945b685..4dc943f868b 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -4614,6 +4614,9 @@ to be inserted between the textual elements.
4614 4614
4615@item dom-parent @var{dom} @var{node} 4615@item dom-parent @var{dom} @var{node}
4616Return the parent of @var{node} in @var{dom}. 4616Return the parent of @var{node} in @var{dom}.
4617
4618@item dom-remove @var{dom} @var{node}
4619Remove @var{node} from @var{dom}.
4617@end table 4620@end table
4618 4621
4619The following are functions for altering the @acronym{DOM}. 4622The following are functions for altering the @acronym{DOM}.
diff --git a/lisp/dom.el b/lisp/dom.el
index 03fe75975a4..cf3a02a51db 100644
--- a/lisp/dom.el
+++ b/lisp/dom.el
@@ -139,6 +139,16 @@ ATTRIBUTE would typically be `class', `id' or the like."
139 (cons dom matches) 139 (cons dom matches)
140 matches))) 140 matches)))
141 141
142(defun dom-remove-node (dom node)
143 "Remove NODE from DOM."
144 ;; If we're removing the top level node, just return nil.
145 (dolist (child (dom-children dom))
146 (cond
147 ((eq node child)
148 (delq node dom))
149 ((not (stringp child))
150 (dom-remove-node child node)))))
151
142(defun dom-parent (dom node) 152(defun dom-parent (dom node)
143 "Return the parent of NODE in DOM." 153 "Return the parent of NODE in DOM."
144 (if (memq node (dom-children dom)) 154 (if (memq node (dom-children dom))
@@ -151,6 +161,7 @@ ATTRIBUTE would typically be `class', `id' or the like."
151 result))) 161 result)))
152 162
153(defun dom-previous-sibling (dom node) 163(defun dom-previous-sibling (dom node)
164 "Return the previous sibling of NODE in DOM."
154 (when-let (parent (dom-parent dom node)) 165 (when-let (parent (dom-parent dom node))
155 (let ((siblings (dom-children parent)) 166 (let ((siblings (dom-children parent))
156 (previous nil)) 167 (previous nil))