From: Fletcher T. Penney Date: Sun, 23 Jul 2017 12:32:49 +0000 (-0400) Subject: CHANGED: Find single non-indenting space at beginning of lines X-Git-Tag: 6.2.0^2~12 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c9bbd14db641c212c2f49565d656e7974af96441;p=multimarkdown CHANGED: Find single non-indenting space at beginning of lines --- diff --git a/Sources/libMultiMarkdown/i18n.h b/Sources/libMultiMarkdown/i18n.h index e406ec3..44e613f 100644 --- a/Sources/libMultiMarkdown/i18n.h +++ b/Sources/libMultiMarkdown/i18n.h @@ -143,7 +143,7 @@ enum lc_languages { }; -// MMD expects a lower case 2 letter code in the metadata or command-line arguments` +// MMD expects a lower case 2 letter code in the metadata or command-line arguments static inline short i18n_language_from_string(const char * l) { if (strcmp(l, "es") == 0) { return LC_ES; diff --git a/Sources/libMultiMarkdown/include/libMultiMarkdown.h b/Sources/libMultiMarkdown/include/libMultiMarkdown.h index 9bd4f9f..8da8be5 100644 --- a/Sources/libMultiMarkdown/include/libMultiMarkdown.h +++ b/Sources/libMultiMarkdown/include/libMultiMarkdown.h @@ -472,6 +472,7 @@ enum token_types { TEXT_HASH, TEXT_LINEBREAK, TEXT_NL, + TEXT_NL_SP, TEXT_NUMBER_POSS_LIST, TEXT_PERCENT, TEXT_PERIOD, diff --git a/Sources/libMultiMarkdown/lexer.c b/Sources/libMultiMarkdown/lexer.c index 9fc7daa..de74f2f 100644 --- a/Sources/libMultiMarkdown/lexer.c +++ b/Sources/libMultiMarkdown/lexer.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.14.3 on Fri Jun 9 07:53:59 2017 */ +/* Generated by re2c 0.15.3 on Sun Jul 23 08:32:21 2017 */ /** MultiMarkdown 6 -- Lightweight markup processor to produce HTML, LaTeX, and more. @@ -80,7 +80,6 @@ int scan(Scanner * s, const char * stop) { { YYCTYPE yych; unsigned int yyaccept = 0; - yych = *YYCURSOR; switch (yych) { case 0x00: @@ -169,24 +168,24 @@ int scan(Scanner * s, const char * stop) { case 'y': case 'z': case 0x7F: goto yy66; - case '\t': goto yy46; - case '\n': goto yy55; - case '\r': goto yy57; - case ' ': goto yy48; - case '!': goto yy19; - case '"': goto yy29; - case '#': goto yy50; - case '$': goto yy42; - case '%': goto yy52; - case '&': goto yy36; - case '\'': goto yy31; - case '(': goto yy21; - case ')': goto yy23; + case '\t': goto yy49; + case '\n': goto yy3; + case '\r': goto yy5; + case ' ': goto yy51; + case '!': goto yy22; + case '"': goto yy32; + case '#': goto yy53; + case '$': goto yy45; + case '%': goto yy55; + case '&': goto yy39; + case '\'': goto yy34; + case '(': goto yy24; + case ')': goto yy26; case '*': goto yy58; - case '+': goto yy5; - case '-': goto yy7; - case '.': goto yy33; - case '/': goto yy38; + case '+': goto yy8; + case '-': goto yy10; + case '.': goto yy36; + case '/': goto yy41; case '0': case '1': case '2': @@ -196,22 +195,22 @@ int scan(Scanner * s, const char * stop) { case '6': case '7': case '8': - case '9': goto yy54; - case ':': goto yy34; - case '<': goto yy9; - case '=': goto yy13; - case '>': goto yy25; - case '[': goto yy15; - case '\\': goto yy40; - case ']': goto yy17; - case '^': goto yy44; + case '9': goto yy57; + case ':': goto yy37; + case '<': goto yy12; + case '=': goto yy16; + case '>': goto yy28; + case '[': goto yy18; + case '\\': goto yy43; + case ']': goto yy20; + case '^': goto yy47; case '_': goto yy60; case '`': goto yy62; - case '{': goto yy3; + case '{': goto yy6; case '|': goto yy64; - case '}': goto yy27; - case '~': goto yy11; - case 0xC2: goto yy49; + case '}': goto yy30; + case '~': goto yy14; + case 0xC2: goto yy52; case 0xC3: case 0xC4: case 0xC5: @@ -268,151 +267,169 @@ yy2: YYCURSOR = YYMARKER; switch (yyaccept) { case 0: goto yy4; - case 1: goto yy6; - case 2: goto yy10; - case 3: goto yy12; - case 4: goto yy14; - case 5: goto yy20; - case 6: goto yy37; - case 7: goto yy51; - case 8: goto yy81; - case 9: goto yy89; - case 10: goto yy96; - case 11: goto yy105; - case 12: goto yy112; - case 13: goto yy121; - case 14: goto yy128; - case 15: goto yy135; - case 16: goto yy145; - default: goto yy302; + case 1: goto yy7; + case 2: goto yy9; + case 3: goto yy13; + case 4: goto yy15; + case 5: goto yy17; + case 6: goto yy23; + case 7: goto yy40; + case 8: goto yy54; + case 9: goto yy81; + case 10: goto yy89; + case 11: goto yy96; + case 12: goto yy105; + case 13: goto yy112; + case 14: goto yy121; + case 15: goto yy128; + case 16: goto yy135; + case 17: goto yy145; + default: goto yy303; } yy3: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '+': goto yy306; - case '-': goto yy305; - case '=': goto yy299; - case '>': goto yy304; - case '{': goto yy301; - case '~': goto yy303; + case ' ': goto yy324; default: goto yy4; } yy4: - { return TEXT_BRACE_LEFT; } + { return TEXT_NL; } yy5: - yyaccept = 1; + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '+': goto yy296; - default: goto yy6; + case '\n': goto yy3; + case ' ': goto yy324; + default: goto yy4; } yy6: - { return PLUS; } -yy7: - ++YYCURSOR; - switch ((yych = *YYCURSOR)) { - case '-': goto yy288; - default: goto yy8; + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '+': goto yy307; + case '-': goto yy306; + case '=': goto yy300; + case '>': goto yy305; + case '{': goto yy302; + case '~': goto yy304; + default: goto yy7; } +yy7: + { return TEXT_BRACE_LEFT; } yy8: - { return DASH_N; } -yy9: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '!': goto yy281; - case '<': goto yy282; - default: goto yy10; + case '+': goto yy297; + default: goto yy9; } +yy9: + { return PLUS; } yy10: - { return ANGLE_LEFT; } + ++YYCURSOR; + switch ((yych = *YYCURSOR)) { + case '-': goto yy289; + default: goto yy11; + } yy11: + { return DASH_N; } +yy12: yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '>': goto yy277; - case '~': goto yy276; - default: goto yy12; + case '!': goto yy282; + case '<': goto yy283; + default: goto yy13; } -yy12: - { return SUBSCRIPT; } yy13: + { return ANGLE_LEFT; } +yy14: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '=': goto yy273; - default: goto yy14; + case '>': goto yy278; + case '~': goto yy277; + default: goto yy15; } -yy14: - { return EQUAL; } yy15: + { return SUBSCRIPT; } +yy16: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '=': goto yy274; + default: goto yy17; + } +yy17: + { return EQUAL; } +yy18: ++YYCURSOR; switch ((yych = *YYCURSOR)) { - case '#': goto yy269; - case '%': goto yy263; - case '>': goto yy271; - case '?': goto yy265; - case '^': goto yy267; - default: goto yy16; + case '#': goto yy270; + case '%': goto yy264; + case '>': goto yy272; + case '?': goto yy266; + case '^': goto yy268; + default: goto yy19; } -yy16: +yy19: { return BRACKET_LEFT; } -yy17: +yy20: ++YYCURSOR; { return BRACKET_RIGHT; } -yy19: +yy22: ++YYCURSOR; switch ((yych = *YYCURSOR)) { - case '[': goto yy261; - default: goto yy20; + case '[': goto yy262; + default: goto yy23; } -yy20: +yy23: { goto scan; } -yy21: +yy24: ++YYCURSOR; { return PAREN_LEFT; } -yy23: +yy26: ++YYCURSOR; { return PAREN_RIGHT; } -yy25: +yy28: ++YYCURSOR; { return ANGLE_RIGHT; } -yy27: +yy30: ++YYCURSOR; switch ((yych = *YYCURSOR)) { - case '}': goto yy259; - default: goto yy28; + case '}': goto yy260; + default: goto yy31; } -yy28: +yy31: { return TEXT_BRACE_RIGHT; } -yy29: +yy32: ++YYCURSOR; { return QUOTE_DOUBLE; } -yy31: +yy34: ++YYCURSOR; switch ((yych = *YYCURSOR)) { - case '\'': goto yy257; - default: goto yy32; + case '\'': goto yy258; + default: goto yy35; } -yy32: +yy35: { return QUOTE_SINGLE; } -yy33: - yyaccept = 5; +yy36: + yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case ' ': goto yy249; - case '.': goto yy250; - default: goto yy20; + case ' ': goto yy250; + case '.': goto yy251; + default: goto yy23; } -yy34: +yy37: ++YYCURSOR; { return COLON; } -yy36: - yyaccept = 6; +yy39: + yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '#': goto yy233; + case '#': goto yy234; case '0': case '1': case '2': @@ -472,85 +489,85 @@ yy36: case 'w': case 'x': case 'y': - case 'z': goto yy230; + case 'z': goto yy231; case 'A': - case 'a': goto yy232; - default: goto yy37; + case 'a': goto yy233; + default: goto yy40; } -yy37: +yy40: { return AMPERSAND; } -yy38: +yy41: ++YYCURSOR; { return SLASH; } -yy40: +yy43: ++YYCURSOR; switch ((yych = *YYCURSOR)) { - case '\n': goto yy153; - case '\r': goto yy155; - case ' ': goto yy158; - case '!': goto yy218; - case '"': goto yy208; - case '#': goto yy188; - case '$': goto yy186; - case '%': goto yy184; - case '&': goto yy172; - case '\'': goto yy206; - case '(': goto yy200; - case ')': goto yy198; - case '*': goto yy164; - case '+': goto yy182; - case ',': goto yy214; - case '-': goto yy180; - case '.': goto yy220; - case '/': goto yy168; - case ':': goto yy210; - case ';': goto yy212; - case '<': goto yy176; - case '=': goto yy178; - case '>': goto yy174; - case '?': goto yy216; - case '@': goto yy170; - case '[': goto yy192; - case '\\': goto yy156; - case ']': goto yy190; - case '^': goto yy166; - case '_': goto yy162; - case '`': goto yy204; - case '{': goto yy196; - case '|': goto yy160; - case '}': goto yy194; - case '~': goto yy202; - default: goto yy41; + case '\n': goto yy154; + case '\r': goto yy156; + case ' ': goto yy159; + case '!': goto yy219; + case '"': goto yy209; + case '#': goto yy189; + case '$': goto yy187; + case '%': goto yy185; + case '&': goto yy173; + case '\'': goto yy207; + case '(': goto yy201; + case ')': goto yy199; + case '*': goto yy165; + case '+': goto yy183; + case ',': goto yy215; + case '-': goto yy181; + case '.': goto yy221; + case '/': goto yy169; + case ':': goto yy211; + case ';': goto yy213; + case '<': goto yy177; + case '=': goto yy179; + case '>': goto yy175; + case '?': goto yy217; + case '@': goto yy171; + case '[': goto yy193; + case '\\': goto yy157; + case ']': goto yy191; + case '^': goto yy167; + case '_': goto yy163; + case '`': goto yy205; + case '{': goto yy197; + case '|': goto yy161; + case '}': goto yy195; + case '~': goto yy203; + default: goto yy44; } -yy41: +yy44: { return TEXT_BACKSLASH; } -yy42: +yy45: ++YYCURSOR; switch ((yych = *YYCURSOR)) { - case '$': goto yy151; - default: goto yy43; + case '$': goto yy152; + default: goto yy46; } -yy43: +yy46: { return MATH_DOLLAR_SINGLE; } -yy44: +yy47: ++YYCURSOR; { return SUPERSCRIPT; } -yy46: +yy49: ++YYCURSOR; { return INDENT_TAB; } -yy48: - YYCTXMARKER = YYCURSOR + 1; - yyaccept = 5; +yy51: + yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); + YYCTXMARKER = YYCURSOR; switch (yych) { case '\t': goto yy137; - case '\n': goto yy55; - case '\r': goto yy150; + case '\n': goto yy150; + case '\r': goto yy151; case ' ': goto yy134; case 0xC2: goto yy136; - default: goto yy20; + default: goto yy23; } -yy49: +yy52: yych = *++YYCURSOR; switch (yych) { case 0x80: @@ -619,10 +636,10 @@ yy49: case 0xA0: goto yy133; default: goto yy2; } -yy50: - YYCTXMARKER = YYCURSOR + 1; - yyaccept = 7; +yy53: + yyaccept = 8; yych = *(YYMARKER = ++YYCURSOR); + YYCTXMARKER = YYCURSOR; switch (yych) { case '\t': case '\n': @@ -630,15 +647,15 @@ yy50: case ' ': case 0xC2: goto yy88; case '#': goto yy86; - default: goto yy51; + default: goto yy54; } -yy51: +yy54: { return TEXT_HASH; } -yy52: +yy55: ++YYCURSOR; { return TEXT_PERCENT; } -yy54: - yyaccept = 5; +yy57: + yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '.': goto yy77; @@ -652,17 +669,7 @@ yy54: case '7': case '8': case '9': goto yy78; - default: goto yy20; - } -yy55: - ++YYCURSOR; -yy56: - { return TEXT_NL; } -yy57: - yych = *++YYCURSOR; - switch (yych) { - case '\n': goto yy55; - default: goto yy56; + default: goto yy23; } yy58: ++YYCURSOR; @@ -684,7 +691,7 @@ yy65: { return PIPE; } yy66: yych = *++YYCURSOR; - goto yy20; + goto yy23; yy67: yych = *++YYCURSOR; switch (yych) { @@ -1020,8 +1027,8 @@ yy76: default: goto yy63; } yy77: - YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; + YYCTXMARKER = YYCURSOR; switch (yych) { case '\t': case ' ': goto yy83; @@ -1059,7 +1066,7 @@ yy82: default: goto yy81; } yy83: - yyaccept = 8; + yyaccept = 9; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { @@ -1076,8 +1083,8 @@ yy85: default: goto yy2; } yy86: - YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; + YYCTXMARKER = YYCURSOR; switch (yych) { case '\t': case '\n': @@ -1088,7 +1095,7 @@ yy86: default: goto yy2; } yy87: - yyaccept = 9; + yyaccept = 10; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; yy88: @@ -1121,7 +1128,7 @@ yy93: default: goto yy92; } yy94: - yyaccept = 10; + yyaccept = 11; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; yy95: @@ -1154,8 +1161,8 @@ yy100: default: goto yy99; } yy101: - YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; + YYCTXMARKER = YYCURSOR; switch (yych) { case '\t': case '\n': @@ -1166,8 +1173,8 @@ yy101: default: goto yy2; } yy102: - YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; + YYCTXMARKER = YYCURSOR; switch (yych) { case '\t': case '\n': @@ -1178,7 +1185,7 @@ yy102: default: goto yy2; } yy103: - yyaccept = 11; + yyaccept = 12; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; yy104: @@ -1211,7 +1218,7 @@ yy109: default: goto yy108; } yy110: - yyaccept = 12; + yyaccept = 13; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; yy111: @@ -1244,8 +1251,8 @@ yy116: default: goto yy115; } yy117: - YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; + YYCTXMARKER = YYCURSOR; switch (yych) { case '\t': case '\n': @@ -1256,8 +1263,8 @@ yy117: default: goto yy2; } yy118: - YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; + YYCTXMARKER = YYCURSOR; switch (yych) { case '\t': case '\n': @@ -1267,7 +1274,7 @@ yy118: default: goto yy2; } yy119: - yyaccept = 13; + yyaccept = 14; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; yy120: @@ -1300,7 +1307,7 @@ yy125: default: goto yy124; } yy126: - yyaccept = 14; + yyaccept = 15; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; yy127: @@ -1333,17 +1340,17 @@ yy132: default: goto yy131; } yy133: - YYCTXMARKER = YYCURSOR + 1; - yyaccept = 5; + yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); + YYCTXMARKER = YYCURSOR; switch (yych) { case '\t': goto yy137; case ' ': goto yy134; case 0xC2: goto yy136; - default: goto yy20; + default: goto yy23; } yy134: - yyaccept = 15; + yyaccept = 16; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\n': goto yy141; @@ -1365,7 +1372,7 @@ yy137: YYCURSOR = YYCTXMARKER; { return NON_INDENT_SPACE; } yy139: - yyaccept = 15; + yyaccept = 16; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\n': goto yy141; @@ -1391,7 +1398,7 @@ yy143: default: goto yy142; } yy144: - yyaccept = 16; + yyaccept = 17; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\n': goto yy141; @@ -1426,147 +1433,150 @@ yy149: default: goto yy2; } yy150: + yych = *++YYCURSOR; + goto yy4; +yy151: yych = *++YYCURSOR; switch (yych) { - case '\n': goto yy55; - default: goto yy56; + case '\n': goto yy150; + default: goto yy4; } -yy151: +yy152: ++YYCURSOR; { return MATH_DOLLAR_DOUBLE; } -yy153: - ++YYCURSOR; yy154: - { return TEXT_LINEBREAK; } + ++YYCURSOR; yy155: + { return TEXT_LINEBREAK; } +yy156: yych = *++YYCURSOR; switch (yych) { - case '\n': goto yy153; - default: goto yy154; + case '\n': goto yy154; + default: goto yy155; } -yy156: +yy157: ++YYCURSOR; switch ((yych = *YYCURSOR)) { - case '(': goto yy222; - case ')': goto yy224; - case '[': goto yy226; - case ']': goto yy228; - default: goto yy157; + case '(': goto yy223; + case ')': goto yy225; + case '[': goto yy227; + case ']': goto yy229; + default: goto yy158; } -yy157: - { return ESCAPED_CHARACTER; } yy158: + { return ESCAPED_CHARACTER; } +yy159: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy160: +yy161: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy162: +yy163: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy164: +yy165: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy166: +yy167: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy168: +yy169: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy170: +yy171: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy172: +yy173: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy174: +yy175: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy176: +yy177: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy178: +yy179: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy180: +yy181: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy182: +yy183: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy184: +yy185: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy186: +yy187: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy188: +yy189: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy190: +yy191: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy192: +yy193: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy194: +yy195: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy196: +yy197: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy198: +yy199: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy200: +yy201: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy202: +yy203: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy204: +yy205: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy206: +yy207: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy208: +yy209: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy210: +yy211: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy212: +yy213: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy214: +yy215: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy216: +yy217: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy218: +yy219: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy220: +yy221: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy222: +yy223: ++YYCURSOR; { return MATH_PAREN_OPEN; } -yy224: +yy225: ++YYCURSOR; { return MATH_PAREN_CLOSE; } -yy226: +yy227: ++YYCURSOR; { return MATH_BRACKET_OPEN; } -yy228: +yy229: ++YYCURSOR; { return MATH_BRACKET_CLOSE; } -yy230: +yy231: ++YYCURSOR; yych = *YYCURSOR; -yy231: +yy232: switch (yych) { case '0': case '1': @@ -1629,18 +1639,18 @@ yy231: case 'w': case 'x': case 'y': - case 'z': goto yy230; - case ';': goto yy244; + case 'z': goto yy231; + case ';': goto yy245; default: goto yy2; } -yy232: +yy233: yych = *++YYCURSOR; switch (yych) { case 'M': - case 'm': goto yy243; - default: goto yy231; + case 'm': goto yy244; + default: goto yy232; } -yy233: +yy234: yych = *++YYCURSOR; switch (yych) { case '0': @@ -1652,18 +1662,18 @@ yy233: case '6': case '7': case '8': - case '9': goto yy235; + case '9': goto yy236; case 'X': - case 'x': goto yy234; + case 'x': goto yy235; default: goto yy2; } -yy234: +yy235: yych = *++YYCURSOR; switch (yych) { case ';': goto yy2; - default: goto yy240; + default: goto yy241; } -yy235: +yy236: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { @@ -1676,17 +1686,17 @@ yy235: case '6': case '7': case '8': - case '9': goto yy235; - case ';': goto yy237; + case '9': goto yy236; + case ';': goto yy238; default: goto yy2; } -yy237: +yy238: ++YYCURSOR; { return HTML_ENTITY; } -yy239: +yy240: ++YYCURSOR; yych = *YYCURSOR; -yy240: +yy241: switch (yych) { case '0': case '1': @@ -1735,228 +1745,222 @@ yy240: case 'c': case 'd': case 'e': - case 'f': goto yy239; - case ';': goto yy241; + case 'f': goto yy240; + case ';': goto yy242; default: goto yy2; } -yy241: +yy242: ++YYCURSOR; { return HTML_ENTITY; } -yy243: +yy244: yych = *++YYCURSOR; switch (yych) { case 'P': - case 'p': goto yy246; - default: goto yy231; + case 'p': goto yy247; + default: goto yy232; } -yy244: +yy245: ++YYCURSOR; { return HTML_ENTITY; } -yy246: +yy247: yych = *++YYCURSOR; switch (yych) { - case ';': goto yy247; - default: goto yy231; + case ';': goto yy248; + default: goto yy232; } -yy247: +yy248: ++YYCURSOR; { return AMPERSAND_LONG; } -yy249: +yy250: yych = *++YYCURSOR; switch (yych) { - case '.': goto yy253; + case '.': goto yy254; default: goto yy2; } -yy250: +yy251: yych = *++YYCURSOR; switch (yych) { - case '.': goto yy251; + case '.': goto yy252; default: goto yy2; } -yy251: +yy252: ++YYCURSOR; { return ELLIPSIS; } -yy253: +yy254: yych = *++YYCURSOR; switch (yych) { - case ' ': goto yy254; + case ' ': goto yy255; default: goto yy2; } -yy254: +yy255: yych = *++YYCURSOR; switch (yych) { - case '.': goto yy255; + case '.': goto yy256; default: goto yy2; } -yy255: +yy256: ++YYCURSOR; { return ELLIPSIS; } -yy257: +yy258: ++YYCURSOR; { return QUOTE_RIGHT_ALT; } -yy259: +yy260: ++YYCURSOR; { return BRACE_DOUBLE_RIGHT; } -yy261: +yy262: ++YYCURSOR; { return BRACKET_IMAGE_LEFT; } -yy263: +yy264: ++YYCURSOR; { return BRACKET_VARIABLE_LEFT; } -yy265: +yy266: ++YYCURSOR; { return BRACKET_GLOSSARY_LEFT; } -yy267: +yy268: ++YYCURSOR; { return BRACKET_FOOTNOTE_LEFT; } -yy269: +yy270: ++YYCURSOR; { return BRACKET_CITATION_LEFT; } -yy271: +yy272: ++YYCURSOR; { return BRACKET_ABBREVIATION_LEFT; } -yy273: +yy274: yych = *++YYCURSOR; switch (yych) { - case '}': goto yy274; + case '}': goto yy275; default: goto yy2; } -yy274: +yy275: ++YYCURSOR; { return CRITIC_HI_CLOSE; } -yy276: +yy277: yych = *++YYCURSOR; switch (yych) { - case '}': goto yy279; + case '}': goto yy280; default: goto yy2; } -yy277: +yy278: ++YYCURSOR; { return CRITIC_SUB_DIV; } -yy279: +yy280: ++YYCURSOR; { return CRITIC_SUB_CLOSE; } -yy281: +yy282: yych = *++YYCURSOR; switch (yych) { - case '-': goto yy285; + case '-': goto yy286; default: goto yy2; } -yy282: +yy283: yych = *++YYCURSOR; switch (yych) { - case '}': goto yy283; + case '}': goto yy284; default: goto yy2; } -yy283: +yy284: ++YYCURSOR; { return CRITIC_COM_CLOSE; } -yy285: +yy286: yych = *++YYCURSOR; switch (yych) { - case '-': goto yy286; + case '-': goto yy287; default: goto yy2; } -yy286: +yy287: ++YYCURSOR; { return HTML_COMMENT_START; } -yy288: +yy289: ++YYCURSOR; switch ((yych = *YYCURSOR)) { - case '-': goto yy294; - case '>': goto yy292; - case '}': goto yy290; - default: goto yy289; + case '-': goto yy295; + case '>': goto yy293; + case '}': goto yy291; + default: goto yy290; } -yy289: - { return DASH_N; } yy290: + { return DASH_N; } +yy291: ++YYCURSOR; { return CRITIC_DEL_CLOSE; } -yy292: +yy293: ++YYCURSOR; { return HTML_COMMENT_STOP; } -yy294: +yy295: ++YYCURSOR; { return DASH_M; } -yy296: +yy297: yych = *++YYCURSOR; switch (yych) { - case '}': goto yy297; + case '}': goto yy298; default: goto yy2; } -yy297: +yy298: ++YYCURSOR; { return CRITIC_ADD_CLOSE; } -yy299: +yy300: ++YYCURSOR; switch ((yych = *YYCURSOR)) { - case '=': goto yy321; - default: goto yy300; + case '=': goto yy322; + default: goto yy301; } -yy300: - { return RAW_FILTER_LEFT; } yy301: - yyaccept = 17; + { return RAW_FILTER_LEFT; } +yy302: + yyaccept = 18; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case 'T': goto yy315; - default: goto yy302; + case 'T': goto yy316; + default: goto yy303; } -yy302: - { return BRACE_DOUBLE_LEFT; } yy303: - yych = *++YYCURSOR; - switch (yych) { - case '~': goto yy313; - default: goto yy2; - } + { return BRACE_DOUBLE_LEFT; } yy304: yych = *++YYCURSOR; switch (yych) { - case '>': goto yy311; + case '~': goto yy314; default: goto yy2; } yy305: yych = *++YYCURSOR; switch (yych) { - case '-': goto yy309; + case '>': goto yy312; default: goto yy2; } yy306: yych = *++YYCURSOR; switch (yych) { - case '+': goto yy307; + case '-': goto yy310; default: goto yy2; } yy307: + yych = *++YYCURSOR; + switch (yych) { + case '+': goto yy308; + default: goto yy2; + } +yy308: ++YYCURSOR; { return CRITIC_ADD_OPEN; } -yy309: +yy310: ++YYCURSOR; { return CRITIC_DEL_OPEN; } -yy311: +yy312: ++YYCURSOR; { return CRITIC_COM_OPEN; } -yy313: +yy314: ++YYCURSOR; { return CRITIC_SUB_OPEN; } -yy315: - yych = *++YYCURSOR; - switch (yych) { - case 'O': goto yy316; - default: goto yy2; - } yy316: yych = *++YYCURSOR; switch (yych) { - case 'C': goto yy317; + case 'O': goto yy317; default: goto yy2; } yy317: yych = *++YYCURSOR; switch (yych) { - case '}': goto yy318; + case 'C': goto yy318; default: goto yy2; } yy318: @@ -1966,11 +1970,520 @@ yy318: default: goto yy2; } yy319: + yych = *++YYCURSOR; + switch (yych) { + case '}': goto yy320; + default: goto yy2; + } +yy320: ++YYCURSOR; { return TOC; } -yy321: +yy322: ++YYCURSOR; { return CRITIC_HI_OPEN; } +yy324: + yych = *++YYCURSOR; + YYCTXMARKER = YYCURSOR; + switch (yych) { + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case '\v': + case '\f': + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + case '!': + case '"': + case '#': + case '$': + case '%': + case '&': + case '\'': + case '(': + case ')': + case '*': + case '+': + case ',': + case '-': + case '.': + case '/': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case ':': + case ';': + case '<': + case '=': + case '>': + case '?': + case '@': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case '[': + case '\\': + case ']': + case '^': + case '_': + case '`': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + case '{': + case '|': + case '}': + case '~': + case 0x7F: goto yy325; + case 0xC2: + case 0xC3: + case 0xC4: + case 0xC5: + case 0xC6: + case 0xC7: + case 0xC8: + case 0xC9: + case 0xCA: + case 0xCB: + case 0xCC: + case 0xCD: + case 0xCE: + case 0xCF: + case 0xD0: + case 0xD1: + case 0xD2: + case 0xD3: + case 0xD4: + case 0xD5: + case 0xD6: + case 0xD7: + case 0xD8: + case 0xD9: + case 0xDA: + case 0xDB: + case 0xDC: + case 0xDD: + case 0xDE: + case 0xDF: goto yy327; + case 0xE0: goto yy328; + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + case 0xE8: + case 0xE9: + case 0xEA: + case 0xEB: + case 0xEC: + case 0xED: + case 0xEE: + case 0xEF: goto yy329; + case 0xF0: goto yy330; + case 0xF1: + case 0xF2: + case 0xF3: goto yy331; + case 0xF4: goto yy332; + default: goto yy2; + } +yy325: + ++YYCURSOR; + YYCURSOR = YYCTXMARKER; + { return TEXT_NL_SP; } +yy327: + yych = *++YYCURSOR; + switch (yych) { + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + case 0x98: + case 0x99: + case 0x9A: + case 0x9B: + case 0x9C: + case 0x9D: + case 0x9E: + case 0x9F: + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: goto yy325; + default: goto yy2; + } +yy328: + yych = *++YYCURSOR; + switch (yych) { + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: goto yy327; + default: goto yy2; + } +yy329: + yych = *++YYCURSOR; + switch (yych) { + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + case 0x98: + case 0x99: + case 0x9A: + case 0x9B: + case 0x9C: + case 0x9D: + case 0x9E: + case 0x9F: + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: goto yy327; + default: goto yy2; + } +yy330: + yych = *++YYCURSOR; + switch (yych) { + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + case 0x98: + case 0x99: + case 0x9A: + case 0x9B: + case 0x9C: + case 0x9D: + case 0x9E: + case 0x9F: + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: goto yy329; + default: goto yy2; + } +yy331: + yych = *++YYCURSOR; + switch (yych) { + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + case 0x98: + case 0x99: + case 0x9A: + case 0x9B: + case 0x9C: + case 0x9D: + case 0x9E: + case 0x9F: + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: goto yy329; + default: goto yy2; + } +yy332: + ++YYCURSOR; + switch ((yych = *YYCURSOR)) { + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: goto yy329; + default: goto yy2; + } } } diff --git a/Sources/libMultiMarkdown/lexer.re b/Sources/libMultiMarkdown/lexer.re index 84f33f9..db280f1 100644 --- a/Sources/libMultiMarkdown/lexer.re +++ b/Sources/libMultiMarkdown/lexer.re @@ -95,6 +95,10 @@ int scan(Scanner * s, const char * stop) { // Don't split `à` character //'\303' '\240' { return TEXT_PLAIN; } + // NL with single space -- this would otherwise be wrapped into a TEXT_PLAIN + NL ' ' / [^ \t\r\n] { return TEXT_NL_SP; } + + "{{TOC}}" { return TOC; } "{++" { return CRITIC_ADD_OPEN; } diff --git a/Sources/libMultiMarkdown/mmd.c b/Sources/libMultiMarkdown/mmd.c index bba97aa..aae9858 100644 --- a/Sources/libMultiMarkdown/mmd.c +++ b/Sources/libMultiMarkdown/mmd.c @@ -1013,10 +1013,14 @@ token * mmd_tokenize_string(mmd_engine * e, size_t start, size_t len, bool stop_ token_append_child(root, line); break; + case TEXT_NL_SP: + t = token_new(TEXT_NL, (size_t)(s.start - e->dstr->str), (size_t)(s.cur - s.start - 1)); case TEXT_LINEBREAK: case TEXT_NL: // We hit the end of a line - t = token_new(type, (size_t)(s.start - e->dstr->str), (size_t)(s.cur - s.start)); + if (type != TEXT_NL_SP) + t = token_new(type, (size_t)(s.start - e->dstr->str), (size_t)(s.cur - s.start)); + token_append_child(line, t); // What sort of line is this? @@ -1039,7 +1043,14 @@ token * mmd_tokenize_string(mmd_engine * e, size_t start, size_t len, bool stop_ } } - line = token_new(0, s.cur - e->dstr->str, 0); + if (type == TEXT_NL_SP) { + line = token_new(0, s.cur - e->dstr->str - 1, 0); + t = token_new(NON_INDENT_SPACE, (size_t)(s.cur - e->dstr->str - 1), 1); + token_append_child(line, t); + } else { + line = token_new(0, s.cur - e->dstr->str, 0); + } + break; default: diff --git a/tests/MMD6Tests/Indented Code Blocks.fodt b/tests/MMD6Tests/Indented Code Blocks.fodt index b5fe939..8f34420 100644 --- a/tests/MMD6Tests/Indented Code Blocks.fodt +++ b/tests/MMD6Tests/Indented Code Blocks.fodt @@ -286,7 +286,7 @@ office:mimetype="application/vnd.oasis.opendocument.text"> foo - foo +foo 5 diff --git a/tests/MMD6Tests/Indented Code Blocks.html b/tests/MMD6Tests/Indented Code Blocks.html index fa3043c..2927e84 100644 --- a/tests/MMD6Tests/Indented Code Blocks.html +++ b/tests/MMD6Tests/Indented Code Blocks.html @@ -16,7 +16,7 @@

foo

-

foo

+

foo

5

diff --git a/tests/MMD6Tests/Indented Code Blocks.htmlc b/tests/MMD6Tests/Indented Code Blocks.htmlc index b46569d..343944a 100644 --- a/tests/MMD6Tests/Indented Code Blocks.htmlc +++ b/tests/MMD6Tests/Indented Code Blocks.htmlc @@ -11,7 +11,7 @@ latex config: article

foo

-

foo

+

foo

5

diff --git a/tests/MMD6Tests/Indented Code Blocks.tex b/tests/MMD6Tests/Indented Code Blocks.tex index 01c1690..a909812 100644 --- a/tests/MMD6Tests/Indented Code Blocks.tex +++ b/tests/MMD6Tests/Indented Code Blocks.tex @@ -14,7 +14,7 @@ bar foo - foo +foo 5