Introduction
Introduction Statistics Contact Development Disclaimer Help
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;
}
}
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.