Some minor fixes to style translation. Quote blocks should be working now. Some extra carriage returns are removed. Some extra style debug output to figure out if there are problems. Extend the test.md file to better cover cases I care about (versus cases the md parser cares about).

This commit is contained in:
Jeremy Rand 2021-04-29 19:33:15 -04:00
parent 9e3562dd5f
commit 0c001196b1
5 changed files with 74 additions and 31 deletions

View File

@ -35,6 +35,7 @@
char * commandName;
int debugEnabled = 0;
int debugIndentLevel = 0;
// Implementation

View File

@ -12,6 +12,7 @@
extern char * commandName;
extern int debugEnabled;
extern int debugIndentLevel;
#endif /* main_h */

View File

@ -222,6 +222,10 @@ void setStyle(tStyleType styleType, uint16_t textMask, uint16_t headerSize)
// Check to see if the previous style actually emitted any characters and if not,
// then just overwrite it with this new style.
currentPos = outputPos();
if (debugEnabled)
fprintf(stderr, "%*ssetStyle(%u,%u,%u) @ offset %lu\n", debugIndentLevel, "", (uint16_t)styleType, textMask, headerSize, currentPos);
if (styleChangedAt == currentPos) {
formatPtr->styleItems[lastStyleIndex].dataOffset = styleOffset;
return;

View File

@ -1,45 +1,84 @@
# h1
## h2
### h3
#### h4
##### h5
###### h6
# h1 *emphasis* **strong** ***stremphasis***
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
## h2 *emphasis* **strong** ***stremphasis***
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
### h3 *emphasis* **strong** ***stremphasis***
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
#### h4 *emphasis* **strong** ***stremphasis***
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
##### h5 *emphasis* **strong** ***stremphasis***
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
###### h6 *emphasis* **strong** ***stremphasis***
h1
==
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
h2
--
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
--------------------
indented code
* list item code
1. number list code
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
// indented code
for (i = 0; i < 100; i++)
printf("Hello, world!\n");
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
```
fenced code
* list item code
1. number list code
// fenced code
for (i = 0; i < 100; i++)
printf("Hello, world!\n");
```
<tag attr='val' attr2="val2">
> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
>
> Quote which leads to a list of bullet items:
> * list quote1
> * list quote2
> * list quote3
>
> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
> Quote which leads to a list of numbered items:
> 1. number list quote1
> 1. number list quote2
> 1. number list quote3
>
> Quote with *emphasis* **strong** ***stremphasis***.
> quote
> * list quote
> 1. number list quote
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
* list item
1. list item
Paragraph which leads to a list of bullet items:
* list item1
* list item2
* list item3
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Paragraph which leads to a list of numbered items:
1. list item1
1. list item2
1. list item3
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
[ref]: /url
paragraph
paragraph with *emphasis* **strong** ***stremphasis***
&#65;&#169;&xA9;&copy; &#1234; &#xabcd;
`code`
*emph* **strong** ***strong emph***
_emph_ __strong__ ___strong emph___
[ref] [ref][] [link](/url)
![ref] ![ref][] ![img](/url)
<http://example.com> <doe@example.com>
\\ \* \. \` \

View File

@ -64,8 +64,6 @@ static MD_PARSER parser = {
NULL // syntax
};
static int debugIndentLevel = 0;
static tBlockListItem * blockList = NULL;
static uint16_t textStyleMask = STYLE_TEXT_PLAIN;
@ -318,7 +316,8 @@ static int enterBlockHook(MD_BLOCKTYPE type, void * detail, void * userdata)
newBlock->numTabs = blockList->numTabs;
if (blockList->styleType == STYLE_TYPE_QUOTE)
newBlock->styleType = STYLE_TYPE_QUOTE;
newBlock->styleType = STYLE_TYPE_TEXT;
else
newBlock->styleType = STYLE_TYPE_TEXT;
}
newBlock->next = blockList;
blockList = newBlock;
@ -505,11 +504,9 @@ static int leaveBlockHook(MD_BLOCKTYPE type, void * detail, void * userdata)
break;
case MD_BLOCK_UL:
writeChar('\r');
break;
case MD_BLOCK_OL:
writeChar('\r');
break;
case MD_BLOCK_LI:
@ -521,11 +518,12 @@ static int leaveBlockHook(MD_BLOCKTYPE type, void * detail, void * userdata)
break;
case MD_BLOCK_H:
if (blockList != NULL)
setStyle(blockList->styleType, textStyleMask, 0);
writeChar('\r');
break;
case MD_BLOCK_CODE:
writeChar('\r');
break;
case MD_BLOCK_P: