1:- module(bc_excerpt, [
    2    bc_excerpt/3 % +Html, +Size, -Excerpt
    3]).    4
    5:- use_module(library(dcg/basics)).
 bc_excerpt(+Html, +Size, -Excerpt) is det
Provides excerpt from HTML by removing tags and taking prefix of text.
   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