1:- module(bc_excerpt, [
2 bc_excerpt/3 3]). 4
5:- use_module(library(dcg/basics)).
12bc_excerpt(Html, Size, Excerpt):-
13 string_codes(Html, Codes),
14 phrase(excerpt(ExcerptCodes, Size), Codes, _),
15 string_codes(Excerpt, ExcerptCodes).
16
17excerpt(Codes, Size) -->
18 "<", !, excerpt_tag,
19 excerpt(Codes, Size).
20
21excerpt([Code|Codes], Size) -->
22 [Code], {
23 Size > 0,
24 SizeNext is Size - 1
25 }, !,
26 excerpt(Codes, SizeNext).
27
28excerpt([], 0) --> !, "".
29
30excerpt([], _) --> eos.
31
32excerpt_tag -->
33 ">", !.
34
35excerpt_tag -->
36 [_], excerpt_tag