Provided by: liblowdown-dev_1.1.0-1_amd64 bug

NAME

       lowdown_diff — compute difference between parsed Markdown trees

LIBRARY

       library “liblowdown”

SYNOPSIS

       #include <sys/queue.h>
       #include <stdio.h>
       #include <lowdown.h>

       struct lowdown_node *
       lowdown_diff(const struct lowdown_node *nold, const struct lowdown_node *nnew, size_t *maxn);

DESCRIPTION

       Computes  the  difference  between  two  Markdown  trees, the source nold and destination nnew, parsed by
       lowdown_doc_parse(3).  It uses the  enum  lowdown_chng  type  in  the  return  tree's  nodes  to  dictate
       insertions  into and deletions from nold.  The maxn argument, if not NULL, is set to one greater than the
       highest node identifier of the returned tree.

RETURN VALUES

       Returns a pointer to the difference tree or NULL on memory exhaution.  The pointer  must  be  freed  with
       lowdown_node_free(3).

EXAMPLES

       The  following  parses  and  compares  old  of  length osz and new of length nsz.  It first allocates the
       parser, then the document, then the renderer (HTML is used in this case).  Then it passes output  to  the
       renderer, prints it, and cleans up resources.  On any memory errors, it exits with err(3).

             struct lowdown_doc *doc;
             struct lowdown_node *no, *nn, *diff;
             struct lowdown_buf *ob;
             void *rndr;

             if ((doc = lowdown_doc_new(NULL)) == NULL)
                     err(1, NULL);
             if ((no = lowdown_doc_parse(doc, NULL, old, osz, NULL)) == NULL)
                     err(1, NULL);
             if ((nn = lowdown_doc_parse(doc, NULL, new, nsz, NULL)) == NULL)
                     err(1, NULL);
             if ((diff = lowdown_diff(no, nn, NULL)) == NULL)
                     err(1, NULL);
             if ((rndr = lowdown_html_new(NULL)) == NULL)
                     err(1, NULL);
             if ((ob = lowdown_buf_new(1024)) == NULL)
                     err(1, NULL);
             if (!lowdown_html_rndr(ob, rndr, diff))
                     err(1, NULL);

             fwrite(stdout, 1, ob->size, ob->data);

             lowdown_buf_free(ob);
             lowdown_html_rndr_free(rndr);
             lowdown_node_free(no);
             lowdown_node_free(nn);
             lowdown_node_free(diff);
             lowdown_doc_free(doc);

SEE ALSO

       lowdown(3)

       Gregory   Cobena,   Serge   Abiteboul,   and   Amelie   Marian,   Detecting  Changes  in  XML  Documents,
       https://www.cs.rutgers.edu/~amelie/papers/2002/diff.pdf, 2002.

       Wu Sun, Manber Udi, and Myers Gene, “An  O(NP)  sequence  comparison  algorithm”,  Issue  6,  Information
       Processing Letters, Volume 35, 1990.

Debian                                             $Mdocdate$                                    LOWDOWN_DIFF(3)