Hard breaks
This commit is contained in:
@@ -37,6 +37,7 @@ static int writecodespan(char *data, int i, size_t len, FILE *out);
|
||||
static int writelink(char *data, int i, size_t len, FILE *out);
|
||||
static int writeimage(char *data, int i, size_t len, FILE *out);
|
||||
static int writeautolink(char *data, int i, size_t len, FILE *out);
|
||||
static int writehardbreak(char *data, int i, size_t len, FILE *out);
|
||||
static int getlinkinfo(char *data, int i, size_t len,
|
||||
int *textstart, int *textend,
|
||||
int *titlestart, int *titleend,
|
||||
@@ -60,6 +61,8 @@ void writedata(char *data, size_t len, FILE *out) {
|
||||
goto special;
|
||||
if ((newi = writeautolink(data, i, len, out)) >= 0)
|
||||
goto special;
|
||||
if ((newi = writehardbreak(data, i, len, out)) >= 0)
|
||||
goto special;
|
||||
if (data[i] == '\\') {
|
||||
if (strchr(punctuation, data[i + 1]) == NULL)
|
||||
writechescape('\\', out);
|
||||
@@ -180,6 +183,25 @@ static int writeautolink(char *data, int i, size_t len, FILE *out) {
|
||||
return i;
|
||||
}
|
||||
|
||||
static int writehardbreak(char *data, int i, size_t len, FILE *out) {
|
||||
const char *endcode = " \n";
|
||||
const int codelen = strlen(endcode);
|
||||
if (data[i] == '\\') {
|
||||
if (++i >= len)
|
||||
return -1;
|
||||
if (data[i++] != '\n')
|
||||
return -1;
|
||||
fputs("<br />", out);
|
||||
return i;
|
||||
}
|
||||
if (i + codelen >= len)
|
||||
return -1;
|
||||
if (memcmp(data + i, endcode, codelen) != 0)
|
||||
return -1;
|
||||
fputs("<br />", out);
|
||||
return i + codelen;
|
||||
}
|
||||
|
||||
static int getlinkinfo(char *data, int i, size_t len,
|
||||
int *textstart, int *textend,
|
||||
int *titlestart, int *titleend,
|
||||
|
||||
@@ -147,7 +147,7 @@ static int parseline(char *line, struct parsestate *currstate, FILE *out) {
|
||||
currstate->prev.type = PLAIN;
|
||||
}
|
||||
else
|
||||
appendcharstring(currstate->para, ' ');
|
||||
appendcharstring(currstate->para, '\n');
|
||||
appendstrstring(currstate->para, realcontent(line, &type));
|
||||
break;
|
||||
/* According to the commonmark spec, this markdown:
|
||||
|
||||
Reference in New Issue
Block a user