Fix blockquotes - smu - smu - simple markup (Markdown) processor (fork, fixes +… | |
git clone git://git.codemadness.org/smu | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 23241209f80b4961d706b151d718e1c5b2d5c632 | |
parent 028a8dadd1f61f5b773b773b022ad2ccb86e3ddc | |
Author: Karl Bartel <[email protected]> | |
Date: Wed, 2 Oct 2019 22:20:02 +0200 | |
Fix blockquotes | |
* nesting did not work | |
* ">" without following space was not recognized as blockquote | |
Quoting https://spec.commonmark.org/0.29/#example-5: | |
> Normally the > that begins a block quote may be followed optionally by | |
a space, which is not considered part of the content. | |
Diffstat: | |
M smu.c | 22 ++++++++++++++++------ | |
1 file changed, 16 insertions(+), 6 deletions(-) | |
--- | |
diff --git a/smu.c b/smu.c | |
@@ -44,7 +44,7 @@ static int nohtml = 0; | |
static Tag lineprefix[] = { | |
{ " ", 0, "<pre><code>", "\n</code></pre>" }, | |
{ "\t", 0, "<pre><code>", "\n</code></pre>" }, | |
- { "> ", 2, "<blockquote>", "</blockquote>… | |
+ { ">", 2, "<blockquote>", "</blockquote>"… | |
{ "###### ", 1, "<h6>", "</h6>" }, | |
{ "##### ", 1, "<h5>", "</h5>" }, | |
{ "#### ", 1, "<h4>", "</h4>" }, | |
@@ -212,12 +212,22 @@ dolineprefix(const char *begin, const char *end, int newb… | |
if(!(buffer = malloc(BUFSIZ))) | |
eprint("Malloc failed."); | |
buffer[0] = '\0'; | |
- for(j = 0, p += l; p < end; p++, j++) { | |
- ADDC(buffer, j) = *p; | |
- if(*p == '\n' && p + l < end) { | |
- if(strncmp(lineprefix[i].search, p + 1, l) != … | |
+ | |
+ /* Collect lines into buffer while they start with the prefix … | |
+ j = 0; | |
+ while((strncmp(lineprefix[i].search, p, l) == 0) && p + l < en… | |
+ p += l; | |
+ | |
+ /* Special case for blockquotes: optional space after … | |
+ if(lineprefix[i].search[0] == '>' && *p == ' ') { | |
+ p++; | |
+ } | |
+ | |
+ while(p < end) { | |
+ ADDC(buffer, j) = *p; | |
+ j++; | |
+ if(*(p++) == '\n') | |
break; | |
- p += l; | |
} | |
} | |