diff options
| author | Lars Magne Ingebrigtsen | 2016-06-27 22:20:29 +0200 |
|---|---|---|
| committer | Lars Magne Ingebrigtsen | 2016-06-27 22:20:29 +0200 |
| commit | 54fe3b6ec0557941c5759523b36bfdec21003f77 (patch) | |
| tree | 38ff9783ea0ff9894e627871c7b627fefaa2be51 | |
| parent | 44caa96dc5c16cbc4ee1bb26ec880af2e2ecf9f8 (diff) | |
| download | emacs-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.texi | 3 | ||||
| -rw-r--r-- | lisp/dom.el | 11 |
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} |
| 4616 | Return the parent of @var{node} in @var{dom}. | 4616 | Return the parent of @var{node} in @var{dom}. |
| 4617 | |||
| 4618 | @item dom-remove @var{dom} @var{node} | ||
| 4619 | Remove @var{node} from @var{dom}. | ||
| 4617 | @end table | 4620 | @end table |
| 4618 | 4621 | ||
| 4619 | The following are functions for altering the @acronym{DOM}. | 4622 | The 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)) |