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; char * commandName;
int debugEnabled = 0; int debugEnabled = 0;
int debugIndentLevel = 0;
// Implementation // Implementation

View File

@ -12,6 +12,7 @@
extern char * commandName; extern char * commandName;
extern int debugEnabled; extern int debugEnabled;
extern int debugIndentLevel;
#endif /* main_h */ #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, // Check to see if the previous style actually emitted any characters and if not,
// then just overwrite it with this new style. // then just overwrite it with this new style.
currentPos = outputPos(); currentPos = outputPos();
if (debugEnabled)
fprintf(stderr, "%*ssetStyle(%u,%u,%u) @ offset %lu\n", debugIndentLevel, "", (uint16_t)styleType, textMask, headerSize, currentPos);
if (styleChangedAt == currentPos) { if (styleChangedAt == currentPos) {
formatPtr->styleItems[lastStyleIndex].dataOffset = styleOffset; formatPtr->styleItems[lastStyleIndex].dataOffset = styleOffset;
return; return;

View File

@ -1,45 +1,84 @@
# h1 # h1 *emphasis* **strong** ***stremphasis***
## h2
### h3 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
##### h5 ## h2 *emphasis* **strong** ***stremphasis***
###### h6
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 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 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 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 code
1. number list code // 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 // fenced code
* list item code for (i = 0; i < 100; i++)
1. number list code 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 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 quote
> 1. number list quote
* list item Paragraph which leads to a list of bullet items:
1. list item * 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 [ref]: /url
paragraph paragraph with *emphasis* **strong** ***stremphasis***
&#65;&#169;&xA9;&copy; &#1234; &#xabcd; &#65;&#169;&xA9;&copy; &#1234; &#xabcd;
`code` `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 NULL // syntax
}; };
static int debugIndentLevel = 0;
static tBlockListItem * blockList = NULL; static tBlockListItem * blockList = NULL;
static uint16_t textStyleMask = STYLE_TEXT_PLAIN; 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; newBlock->numTabs = blockList->numTabs;
if (blockList->styleType == STYLE_TYPE_QUOTE) if (blockList->styleType == STYLE_TYPE_QUOTE)
newBlock->styleType = STYLE_TYPE_QUOTE; newBlock->styleType = STYLE_TYPE_QUOTE;
newBlock->styleType = STYLE_TYPE_TEXT; else
newBlock->styleType = STYLE_TYPE_TEXT;
} }
newBlock->next = blockList; newBlock->next = blockList;
blockList = newBlock; blockList = newBlock;
@ -505,11 +504,9 @@ static int leaveBlockHook(MD_BLOCKTYPE type, void * detail, void * userdata)
break; break;
case MD_BLOCK_UL: case MD_BLOCK_UL:
writeChar('\r');
break; break;
case MD_BLOCK_OL: case MD_BLOCK_OL:
writeChar('\r');
break; break;
case MD_BLOCK_LI: case MD_BLOCK_LI:
@ -521,11 +518,12 @@ static int leaveBlockHook(MD_BLOCKTYPE type, void * detail, void * userdata)
break; break;
case MD_BLOCK_H: case MD_BLOCK_H:
if (blockList != NULL)
setStyle(blockList->styleType, textStyleMask, 0);
writeChar('\r'); writeChar('\r');
break; break;
case MD_BLOCK_CODE: case MD_BLOCK_CODE:
writeChar('\r');
break; break;
case MD_BLOCK_P: case MD_BLOCK_P: