two sequently paragraphs are now recognized properly
This commit is contained in:
parent
bce9fd9eba
commit
b93304ffba
1 changed files with 14 additions and 19 deletions
27
cmarkdown.c
27
cmarkdown.c
|
@ -12,7 +12,7 @@
|
||||||
#define BUFFERSIZE 512
|
#define BUFFERSIZE 512
|
||||||
#define LENGTH(x) sizeof(x)/sizeof(x[0])
|
#define LENGTH(x) sizeof(x)/sizeof(x[0])
|
||||||
#define ADDC(b,i) if((i + 1) % BUFFERSIZE == 0) \
|
#define ADDC(b,i) if((i + 1) % BUFFERSIZE == 0) \
|
||||||
{ b = realloc(b,((i + 1)+ BUFFERSIZE) * sizeof(b)); if(!b) eprint("Malloc failed."); }; b[i]
|
{ b = realloc(b,((i + 1)+ BUFFERSIZE) * sizeof(b)); if(!b) eprint("Malloc failed."); }; b[i+1] = '\0'; b[i]
|
||||||
|
|
||||||
|
|
||||||
typedef unsigned int (*Parser)(const char *, const char *);
|
typedef unsigned int (*Parser)(const char *, const char *);
|
||||||
|
@ -268,6 +268,8 @@ dolist(const char *begin, const char *end) {
|
||||||
if(*p == '\n') {
|
if(*p == '\n') {
|
||||||
if(p[1] == '\n') {
|
if(p[1] == '\n') {
|
||||||
p++;
|
p++;
|
||||||
|
ADDC(buffer,i) = '\n';
|
||||||
|
i++;
|
||||||
run = 0;
|
run = 0;
|
||||||
}
|
}
|
||||||
q = p + 1;
|
q = p + 1;
|
||||||
|
@ -282,28 +284,21 @@ dolist(const char *begin, const char *end) {
|
||||||
j = 0;
|
j = 0;
|
||||||
}
|
}
|
||||||
for(;q[j] == ' ' && j < indent; j++);
|
for(;q[j] == ' ' && j < indent; j++);
|
||||||
//printf("--%i %i--\n",j,indent);
|
|
||||||
if(j == indent) {
|
if(j == indent) {
|
||||||
|
ADDC(buffer,i) = '\n';
|
||||||
|
i++;
|
||||||
p += indent;
|
p += indent;
|
||||||
run = 1;
|
run = 1;
|
||||||
if(q[0] == ' ')
|
if(q[0] == ' ')
|
||||||
p++;
|
p++;
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
ADDC(buffer,i) = '\n';
|
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
ADDC(buffer,i) = '\n';
|
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
ADDC(buffer,i) = *p;
|
ADDC(buffer,i) = *p;
|
||||||
}
|
}
|
||||||
ADDC(buffer,i) = '\0';
|
|
||||||
if(run == 0)
|
|
||||||
while(buffer[--i] == '\n')
|
|
||||||
buffer[i] = '\0';
|
|
||||||
fputs("<li>",stdout);
|
fputs("<li>",stdout);
|
||||||
process(buffer,buffer+i+1);
|
process(buffer,buffer+i);
|
||||||
fputs("</li>\n",stdout);
|
fputs("</li>\n",stdout);
|
||||||
}
|
}
|
||||||
puts(ul ? "</ul>" : "</ol>");
|
puts(ul ? "</ul>" : "</ol>");
|
||||||
|
@ -328,7 +323,7 @@ doparagraph(const char *begin, const char *end) {
|
||||||
fputs("\n<p>",stdout);
|
fputs("\n<p>",stdout);
|
||||||
process(begin+2,p);
|
process(begin+2,p);
|
||||||
fputs("</p>\n",stdout);
|
fputs("</p>\n",stdout);
|
||||||
return p - begin + 1;
|
return p - begin;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int
|
unsigned int
|
||||||
|
@ -468,13 +463,13 @@ process(const char *begin, const char *end) {
|
||||||
if(affected)
|
if(affected)
|
||||||
p += affected;
|
p += affected;
|
||||||
else {
|
else {
|
||||||
for(q = p; *q && *q == '\n' && q != end; q++);
|
for(q = p; *q == '\n' && q != end; q++);
|
||||||
if(q == end || !*q)
|
if(q != end && *q) {
|
||||||
return;
|
if(nohtml)
|
||||||
else if(nohtml)
|
|
||||||
hprint(p,p+1);
|
hprint(p,p+1);
|
||||||
else
|
else
|
||||||
putchar(*p);
|
putchar(*p);
|
||||||
|
}
|
||||||
p++;
|
p++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue