2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
|
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
|
+
|
const struct Blob *ib, /* input blob in markdown */
const struct mkd_renderer *rndrer /* renderer descriptor (callbacks) */
){
struct link_ref *lr;
struct footnote *fn;
size_t i, beg, end = 0;
struct render rndr;
size_t size;
Blob text = BLOB_INITIALIZER; /* input after the first pass */
Blob * const allNotes = &rndr.notes.all;
/* filling the render structure */
if( !rndrer ) return;
rndr.make = *rndrer;
rndr.nBlobCache = 0;
|
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
|
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
|
-
+
|
rndr.active_char['<'] = char_langle_tag;
rndr.active_char['\\'] = char_escape;
rndr.active_char['&'] = char_entity;
/* first pass: iterate over lines looking for references,
* copying everything else into "text" */
beg = 0;
for(const size_t size = blob_size(ib); beg<size ;){
for(size = blob_size(ib); beg<size ;){
const char* const data = blob_buffer(ib);
if( is_ref(data, beg, size, &end, &rndr.refs) ){
beg = end;
}else if(is_footnote(data, beg, size, &end, &rndr.notes.all)){
beg = end;
}else{ /* skipping to the next line */
end = beg;
|