logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

lowdown_diff — compute difference between parsed Markdown trees

Description

       Computes  the  difference  between  two  Markdown  trees, the source nold and destination nnew, parsed by
       lowdown_doc_parse(3).  It uses the  enumlowdown_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.

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);

Library

       library “liblowdown”

Name

       lowdown_diff — compute difference between parsed Markdown trees

Return Values

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

See Also

lowdown(3)

       Gregory   Cobena,   Serge   Abiteboul,   and   Amelie   Marian,   DetectingChangesinXMLDocuments,
       https://www.cs.rutgers.edu/~amelie/papers/2002/diff.pdf, 2002.

       Wu Sun, Manber Udi, and Myers Gene, “An  O(NP)  sequence  comparison  algorithm”,  Issue6,  InformationProcessingLetters, Volume 35, 1990.

Debian                                             $Mdocdate$                                    LOWDOWN_DIFF(3)

Synopsis

#include<sys/queue.h>#include<stdio.h>#include<lowdown.h>structlowdown_node*lowdown_diff(conststructlowdown_node*nold, conststructlowdown_node*nnew, size_t*maxn);

See Also