blob: 6579203528ece35906fe7a1dbf5268c8e80abfd5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
(in-package :phaser.unhtml)
(defun node-has-text (node)
(let ((tag (plump:tag-name node))
(has-text (not (string= (plump:text node) ""))))
(and (string= tag "p")
has-text)))
(defun text-children (dom)
(loop for c across (plump:child-elements dom)
if (node-has-text c) collect c ))
(defun text-excerpt (content excerpt-length)
(let ((text-nodes (text-children (plump:parse content))))
(if text-nodes
(let ((text (plump:text (first text-nodes))))
(subseq text 0 (min excerpt-length (length text))))
nil)))
|