From: Fletcher T. Penney Date: Sun, 12 Feb 2017 22:49:33 +0000 (-0500) Subject: FIXED: Fix bug in URL parsing X-Git-Tag: 0.3.0a^2~16 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=083d6d58b5908da86d3b8c55953f9c1b0ea49e8c;p=multimarkdown FIXED: Fix bug in URL parsing --- diff --git a/src/html.c b/src/html.c index 689ff8d..ebb0a40 100644 --- a/src/html.c +++ b/src/html.c @@ -1338,6 +1338,7 @@ void mmd_export_token_html(DString * out, const char * source, token * t, size_t if (t->next) print_char('\n'); break; + case TEXT_HASH: case TEXT_NUMBER_POSS_LIST: case TEXT_PERIOD: case TEXT_PLAIN: diff --git a/src/latex.c b/src/latex.c index 392112b..ce46ba0 100644 --- a/src/latex.c +++ b/src/latex.c @@ -109,6 +109,9 @@ void mmd_print_char_latex(DString * out, char c) { void mmd_print_string_latex(DString * out, const char * str) { + if (str == NULL) + return; + while (*str != '\0') { mmd_print_char_latex(out, *str); str++; @@ -1068,6 +1071,9 @@ void mmd_export_token_latex(DString * out, const char * source, token * t, scrat break; case TEXT_EMPTY: break; + case TEXT_HASH: + print("\\#"); + break; case TEXT_NL: if (t->next) print_char('\n'); diff --git a/src/lexer.c b/src/lexer.c index 2dba07e..eee5df8 100644 --- a/src/lexer.c +++ b/src/lexer.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.14.3 on Sun Feb 12 08:34:29 2017 */ +/* Generated by re2c 0.14.3 on Sun Feb 12 17:20:11 2017 */ /** MultiMarkdown 6 -- Lightweight markup processor to produce HTML, LaTeX, and more. @@ -85,8 +85,8 @@ int scan(Scanner * s, const char * stop) { yych = *YYCURSOR; switch (yych) { case '\t': goto yy42; - case '\n': goto yy47; - case '\r': goto yy49; + case '\n': goto yy48; + case '\r': goto yy50; case ' ': goto yy44; case '!': goto yy18; case '"': goto yy26; @@ -96,7 +96,7 @@ int scan(Scanner * s, const char * stop) { case '\'': goto yy28; case '(': goto yy19; case ')': goto yy21; - case '*': goto yy50; + case '*': goto yy51; case '+': goto yy4; case '-': goto yy6; case '.': goto yy30; @@ -110,7 +110,7 @@ int scan(Scanner * s, const char * stop) { case '6': case '7': case '8': - case '9': goto yy46; + case '9': goto yy47; case ':': goto yy31; case '<': goto yy8; case '=': goto yy12; @@ -119,24 +119,24 @@ int scan(Scanner * s, const char * stop) { case '\\': goto yy37; case ']': goto yy16; case '^': goto yy40; - case '_': goto yy52; - case '`': goto yy54; + case '_': goto yy53; + case '`': goto yy55; case '{': goto yy2; - case '|': goto yy56; + case '|': goto yy57; case '}': goto yy25; case '~': goto yy10; - default: goto yy58; + default: goto yy59; } yy2: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '+': goto yy256; - case '-': goto yy255; - case '=': goto yy252; - case '>': goto yy254; - case '{': goto yy250; - case '~': goto yy253; + case '+': goto yy257; + case '-': goto yy256; + case '=': goto yy253; + case '>': goto yy255; + case '{': goto yy251; + case '~': goto yy254; default: goto yy3; } yy3: @@ -145,7 +145,7 @@ yy4: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '+': goto yy247; + case '+': goto yy248; default: goto yy5; } yy5: @@ -153,7 +153,7 @@ yy5: yy6: ++YYCURSOR; switch ((yych = *YYCURSOR)) { - case '-': goto yy241; + case '-': goto yy242; default: goto yy7; } yy7: @@ -162,7 +162,7 @@ yy8: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '<': goto yy238; + case '<': goto yy239; default: goto yy9; } yy9: @@ -171,8 +171,8 @@ yy10: yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '>': goto yy234; - case '~': goto yy233; + case '>': goto yy235; + case '~': goto yy234; default: goto yy11; } yy11: @@ -181,7 +181,7 @@ yy12: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '=': goto yy230; + case '=': goto yy231; default: goto yy13; } yy13: @@ -189,9 +189,9 @@ yy13: yy14: ++YYCURSOR; switch ((yych = *YYCURSOR)) { - case '#': goto yy226; - case '%': goto yy224; - case '^': goto yy228; + case '#': goto yy227; + case '%': goto yy225; + case '^': goto yy229; default: goto yy15; } yy15: @@ -202,7 +202,7 @@ yy16: yy18: yych = *++YYCURSOR; switch (yych) { - case '[': goto yy222; + case '[': goto yy223; default: goto yy3; } yy19: @@ -217,7 +217,7 @@ yy23: yy25: yych = *++YYCURSOR; switch (yych) { - case '}': goto yy220; + case '}': goto yy221; default: goto yy3; } yy26: @@ -226,7 +226,7 @@ yy26: yy28: ++YYCURSOR; switch ((yych = *YYCURSOR)) { - case '\'': goto yy218; + case '\'': goto yy219; default: goto yy29; } yy29: @@ -236,11 +236,11 @@ yy30: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '\t': goto yy208; - case '\n': goto yy205; - case '\r': goto yy207; - case ' ': goto yy210; - case '.': goto yy211; + case '\t': goto yy209; + case '\n': goto yy206; + case '\r': goto yy208; + case ' ': goto yy211; + case '.': goto yy212; default: goto yy3; } yy31: @@ -251,7 +251,7 @@ yy33: yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'A': - case 'a': goto yy200; + case 'a': goto yy201; default: goto yy34; } yy34: @@ -262,45 +262,45 @@ yy35: yy37: yych = *++YYCURSOR; switch (yych) { - case ' ': goto yy128; - case '!': goto yy188; - case '"': goto yy178; - case '#': goto yy158; - case '$': goto yy156; - case '%': goto yy154; - case '&': goto yy142; - case '\'': goto yy176; - case '(': goto yy170; - case ')': goto yy168; - case '*': goto yy134; - case '+': goto yy152; - case ',': goto yy184; - case '-': goto yy150; - case '.': goto yy190; - case '/': goto yy138; - case ':': goto yy180; - case ';': goto yy182; - case '<': goto yy146; - case '=': goto yy148; - case '>': goto yy144; - case '?': goto yy186; - case '@': goto yy140; - case '[': goto yy162; - case '\\': goto yy126; - case ']': goto yy160; - case '^': goto yy136; - case '_': goto yy132; - case '`': goto yy174; - case '{': goto yy166; - case '|': goto yy130; - case '}': goto yy164; - case '~': goto yy172; + case ' ': goto yy129; + case '!': goto yy189; + case '"': goto yy179; + case '#': goto yy159; + case '$': goto yy157; + case '%': goto yy155; + case '&': goto yy143; + case '\'': goto yy177; + case '(': goto yy171; + case ')': goto yy169; + case '*': goto yy135; + case '+': goto yy153; + case ',': goto yy185; + case '-': goto yy151; + case '.': goto yy191; + case '/': goto yy139; + case ':': goto yy181; + case ';': goto yy183; + case '<': goto yy147; + case '=': goto yy149; + case '>': goto yy145; + case '?': goto yy187; + case '@': goto yy141; + case '[': goto yy163; + case '\\': goto yy127; + case ']': goto yy161; + case '^': goto yy137; + case '_': goto yy133; + case '`': goto yy175; + case '{': goto yy167; + case '|': goto yy131; + case '}': goto yy165; + case '~': goto yy173; default: goto yy3; } yy38: ++YYCURSOR; switch ((yych = *YYCURSOR)) { - case '$': goto yy124; + case '$': goto yy125; default: goto yy39; } yy39: @@ -314,29 +314,31 @@ yy42: yy44: yych = *++YYCURSOR; switch (yych) { - case '\n': goto yy47; - case '\r': goto yy115; - case ' ': goto yy113; + case '\n': goto yy48; + case '\r': goto yy116; + case ' ': goto yy114; default: goto yy3; } yy45: YYCTXMARKER = YYCURSOR + 1; - yyaccept = 0; + yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\t': case '\n': case '\r': - case ' ': goto yy74; - case '#': goto yy72; - default: goto yy3; + case ' ': goto yy75; + case '#': goto yy73; + default: goto yy46; } yy46: + { return TEXT_HASH; } +yy47: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '.': goto yy63; + case '.': goto yy64; case '0': case '1': case '2': @@ -346,66 +348,66 @@ yy46: case '6': case '7': case '8': - case '9': goto yy65; + case '9': goto yy66; default: goto yy3; } -yy47: - ++YYCURSOR; yy48: - { return TEXT_NL; } + ++YYCURSOR; yy49: + { return TEXT_NL; } +yy50: yych = *++YYCURSOR; switch (yych) { - case '\n': goto yy47; - default: goto yy48; + case '\n': goto yy48; + default: goto yy49; } -yy50: +yy51: ++YYCURSOR; { return STAR; } -yy52: +yy53: ++YYCURSOR; { return UL; } -yy54: +yy55: ++YYCURSOR; yych = *YYCURSOR; - goto yy62; -yy55: - { return BACKTICK; } + goto yy63; yy56: + { return BACKTICK; } +yy57: ++YYCURSOR; yych = *YYCURSOR; - goto yy60; -yy57: - { return PIPE; } + goto yy61; yy58: + { return PIPE; } +yy59: yych = *++YYCURSOR; goto yy3; -yy59: +yy60: ++YYCURSOR; yych = *YYCURSOR; -yy60: +yy61: switch (yych) { - case '|': goto yy59; - default: goto yy57; + case '|': goto yy60; + default: goto yy58; } -yy61: +yy62: ++YYCURSOR; yych = *YYCURSOR; -yy62: +yy63: switch (yych) { - case '`': goto yy61; - default: goto yy55; + case '`': goto yy62; + default: goto yy56; } -yy63: +yy64: yych = *++YYCURSOR; switch (yych) { case '\t': - case ' ': goto yy70; - case '\n': goto yy67; - case '\r': goto yy69; - default: goto yy64; + case ' ': goto yy71; + case '\n': goto yy68; + case '\r': goto yy70; + default: goto yy65; } -yy64: +yy65: YYCURSOR = YYMARKER; switch (yyaccept) { case 0: goto yy3; @@ -414,16 +416,17 @@ yy64: case 3: goto yy11; case 4: goto yy13; case 5: goto yy34; - case 6: goto yy121; - case 7: goto yy206; - default: goto yy251; + case 6: goto yy46; + case 7: goto yy122; + case 8: goto yy207; + default: goto yy252; } -yy65: +yy66: YYCTXMARKER = YYCURSOR + 1; ++YYCURSOR; yych = *YYCURSOR; switch (yych) { - case '.': goto yy63; + case '.': goto yy64; case '0': case '1': case '2': @@ -433,627 +436,627 @@ yy65: case '6': case '7': case '8': - case '9': goto yy65; - default: goto yy64; + case '9': goto yy66; + default: goto yy65; } -yy67: - ++YYCURSOR; yy68: + ++YYCURSOR; +yy69: YYCURSOR = YYCTXMARKER; { return TEXT_NUMBER_POSS_LIST; } -yy69: +yy70: yych = *++YYCURSOR; switch (yych) { - case '\n': goto yy67; - default: goto yy68; + case '\n': goto yy68; + default: goto yy69; } -yy70: +yy71: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\t': - case ' ': goto yy70; - default: goto yy68; + case ' ': goto yy71; + default: goto yy69; } -yy72: +yy73: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '\t': case '\n': case '\r': - case ' ': goto yy80; - case '#': goto yy85; - default: goto yy64; + case ' ': goto yy81; + case '#': goto yy86; + default: goto yy65; } -yy73: +yy74: ++YYCURSOR; yych = *YYCURSOR; -yy74: +yy75: switch (yych) { case '\t': - case ' ': goto yy73; - case '\n': goto yy76; - case '\r': goto yy78; - default: goto yy75; + case ' ': goto yy74; + case '\n': goto yy77; + case '\r': goto yy79; + default: goto yy76; } -yy75: - { return HASH1; } yy76: - ++YYCURSOR; + { return HASH1; } yy77: + ++YYCURSOR; +yy78: YYCURSOR = YYCTXMARKER; { return HASH1; } -yy78: +yy79: yych = *++YYCURSOR; switch (yych) { - case '\n': goto yy76; - default: goto yy77; + case '\n': goto yy77; + default: goto yy78; } -yy79: +yy80: ++YYCURSOR; yych = *YYCURSOR; -yy80: +yy81: switch (yych) { case '\t': - case ' ': goto yy79; - case '\n': goto yy82; - case '\r': goto yy84; - default: goto yy81; + case ' ': goto yy80; + case '\n': goto yy83; + case '\r': goto yy85; + default: goto yy82; } -yy81: - { return HASH2; } yy82: - ++YYCURSOR; + { return HASH2; } yy83: + ++YYCURSOR; +yy84: YYCURSOR = YYCTXMARKER; { return HASH2; } -yy84: +yy85: yych = *++YYCURSOR; switch (yych) { - case '\n': goto yy82; - default: goto yy83; + case '\n': goto yy83; + default: goto yy84; } -yy85: +yy86: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '\t': case '\n': case '\r': - case ' ': goto yy88; - case '#': goto yy86; - default: goto yy64; + case ' ': goto yy89; + case '#': goto yy87; + default: goto yy65; } -yy86: +yy87: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '\t': case '\n': case '\r': - case ' ': goto yy94; - case '#': goto yy99; - default: goto yy64; + case ' ': goto yy95; + case '#': goto yy100; + default: goto yy65; } -yy87: +yy88: ++YYCURSOR; yych = *YYCURSOR; -yy88: +yy89: switch (yych) { case '\t': - case ' ': goto yy87; - case '\n': goto yy90; - case '\r': goto yy92; - default: goto yy89; + case ' ': goto yy88; + case '\n': goto yy91; + case '\r': goto yy93; + default: goto yy90; } -yy89: - { return HASH3; } yy90: - ++YYCURSOR; + { return HASH3; } yy91: + ++YYCURSOR; +yy92: YYCURSOR = YYCTXMARKER; { return HASH3; } -yy92: +yy93: yych = *++YYCURSOR; switch (yych) { - case '\n': goto yy90; - default: goto yy91; + case '\n': goto yy91; + default: goto yy92; } -yy93: +yy94: ++YYCURSOR; yych = *YYCURSOR; -yy94: +yy95: switch (yych) { case '\t': - case ' ': goto yy93; - case '\n': goto yy96; - case '\r': goto yy98; - default: goto yy95; + case ' ': goto yy94; + case '\n': goto yy97; + case '\r': goto yy99; + default: goto yy96; } -yy95: - { return HASH4; } yy96: - ++YYCURSOR; + { return HASH4; } yy97: + ++YYCURSOR; +yy98: YYCURSOR = YYCTXMARKER; { return HASH4; } -yy98: +yy99: yych = *++YYCURSOR; switch (yych) { - case '\n': goto yy96; - default: goto yy97; + case '\n': goto yy97; + default: goto yy98; } -yy99: +yy100: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '\t': case '\n': case '\r': - case ' ': goto yy102; - case '#': goto yy100; - default: goto yy64; + case ' ': goto yy103; + case '#': goto yy101; + default: goto yy65; } -yy100: +yy101: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '\t': case '\n': case '\r': - case ' ': goto yy108; - default: goto yy64; + case ' ': goto yy109; + default: goto yy65; } -yy101: +yy102: ++YYCURSOR; yych = *YYCURSOR; -yy102: +yy103: switch (yych) { case '\t': - case ' ': goto yy101; - case '\n': goto yy104; - case '\r': goto yy106; - default: goto yy103; + case ' ': goto yy102; + case '\n': goto yy105; + case '\r': goto yy107; + default: goto yy104; } -yy103: - { return HASH5; } yy104: - ++YYCURSOR; + { return HASH5; } yy105: + ++YYCURSOR; +yy106: YYCURSOR = YYCTXMARKER; { return HASH5; } -yy106: +yy107: yych = *++YYCURSOR; switch (yych) { - case '\n': goto yy104; - default: goto yy105; + case '\n': goto yy105; + default: goto yy106; } -yy107: +yy108: ++YYCURSOR; yych = *YYCURSOR; -yy108: +yy109: switch (yych) { case '\t': - case ' ': goto yy107; - case '\n': goto yy110; - case '\r': goto yy112; - default: goto yy109; + case ' ': goto yy108; + case '\n': goto yy111; + case '\r': goto yy113; + default: goto yy110; } -yy109: - { return HASH6; } yy110: - ++YYCURSOR; + { return HASH6; } yy111: + ++YYCURSOR; +yy112: YYCURSOR = YYCTXMARKER; { return HASH6; } -yy112: +yy113: yych = *++YYCURSOR; switch (yych) { - case '\n': goto yy110; - default: goto yy111; + case '\n': goto yy111; + default: goto yy112; } -yy113: +yy114: ++YYCURSOR; switch ((yych = *YYCURSOR)) { - case '\n': goto yy117; - case '\r': goto yy119; - case ' ': goto yy116; - default: goto yy114; + case '\n': goto yy118; + case '\r': goto yy120; + case ' ': goto yy117; + default: goto yy115; } -yy114: - { return NON_INDENT_SPACE; } yy115: + { return NON_INDENT_SPACE; } +yy116: yych = *++YYCURSOR; switch (yych) { - case '\n': goto yy47; - default: goto yy48; + case '\n': goto yy48; + default: goto yy49; } -yy116: +yy117: yych = *++YYCURSOR; switch (yych) { - case '\n': goto yy117; - case '\r': goto yy119; - case ' ': goto yy120; - default: goto yy114; + case '\n': goto yy118; + case '\r': goto yy120; + case ' ': goto yy121; + default: goto yy115; } -yy117: - ++YYCURSOR; yy118: - { return TEXT_LINEBREAK; } + ++YYCURSOR; yy119: + { return TEXT_LINEBREAK; } +yy120: yych = *++YYCURSOR; switch (yych) { - case '\n': goto yy117; - default: goto yy118; + case '\n': goto yy118; + default: goto yy119; } -yy120: - yyaccept = 6; +yy121: + yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '\n': goto yy117; - case '\r': goto yy119; - case ' ': goto yy122; - default: goto yy121; + case '\n': goto yy118; + case '\r': goto yy120; + case ' ': goto yy123; + default: goto yy122; } -yy121: - { return INDENT_SPACE; } yy122: + { return INDENT_SPACE; } +yy123: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { - case '\n': goto yy117; - case '\r': goto yy119; - case ' ': goto yy122; - default: goto yy64; + case '\n': goto yy118; + case '\r': goto yy120; + case ' ': goto yy123; + default: goto yy65; } -yy124: +yy125: ++YYCURSOR; { return MATH_DOLLAR_DOUBLE; } -yy126: +yy127: ++YYCURSOR; switch ((yych = *YYCURSOR)) { - case '(': goto yy192; - case ')': goto yy194; - case '[': goto yy196; - case ']': goto yy198; - default: goto yy127; + case '(': goto yy193; + case ')': goto yy195; + case '[': goto yy197; + case ']': goto yy199; + default: goto yy128; } -yy127: - { return ESCAPED_CHARACTER; } yy128: + { return ESCAPED_CHARACTER; } +yy129: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy130: +yy131: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy132: +yy133: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy134: +yy135: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy136: +yy137: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy138: +yy139: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy140: +yy141: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy142: +yy143: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy144: +yy145: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy146: +yy147: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy148: +yy149: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy150: +yy151: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy152: +yy153: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy154: +yy155: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy156: +yy157: ++YYCURSOR; { return ESCAPED_CHARACTER; } -yy158: +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 MATH_PAREN_OPEN; } -yy194: +yy195: ++YYCURSOR; { return MATH_PAREN_CLOSE; } -yy196: +yy197: ++YYCURSOR; { return MATH_BRACKET_OPEN; } -yy198: +yy199: ++YYCURSOR; { return MATH_BRACKET_CLOSE; } -yy200: +yy201: yych = *++YYCURSOR; switch (yych) { case 'M': - case 'm': goto yy201; - default: goto yy64; + case 'm': goto yy202; + default: goto yy65; } -yy201: +yy202: yych = *++YYCURSOR; switch (yych) { case 'P': - case 'p': goto yy202; - default: goto yy64; + case 'p': goto yy203; + default: goto yy65; } -yy202: +yy203: yych = *++YYCURSOR; switch (yych) { - case ';': goto yy203; - default: goto yy64; + case ';': goto yy204; + default: goto yy65; } -yy203: +yy204: ++YYCURSOR; { return AMPERSAND_LONG; } -yy205: - ++YYCURSOR; yy206: + ++YYCURSOR; +yy207: YYCURSOR = YYCTXMARKER; { return TEXT_PERIOD; } -yy207: +yy208: yych = *++YYCURSOR; switch (yych) { - case '\n': goto yy205; - default: goto yy206; + case '\n': goto yy206; + default: goto yy207; } -yy208: +yy209: ++YYCURSOR; yych = *YYCURSOR; -yy209: +yy210: switch (yych) { case '\t': - case ' ': goto yy208; - default: goto yy206; + case ' ': goto yy209; + default: goto yy207; } -yy210: - yyaccept = 7; +yy211: + yyaccept = 8; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '.': goto yy214; - default: goto yy209; + case '.': goto yy215; + default: goto yy210; } -yy211: +yy212: yych = *++YYCURSOR; switch (yych) { - case '.': goto yy212; - default: goto yy64; + case '.': goto yy213; + default: goto yy65; } -yy212: +yy213: ++YYCURSOR; { return ELLIPSIS; } -yy214: +yy215: yych = *++YYCURSOR; switch (yych) { - case ' ': goto yy215; - default: goto yy64; + case ' ': goto yy216; + default: goto yy65; } -yy215: +yy216: yych = *++YYCURSOR; switch (yych) { - case '.': goto yy216; - default: goto yy64; + case '.': goto yy217; + default: goto yy65; } -yy216: +yy217: ++YYCURSOR; { return ELLIPSIS; } -yy218: +yy219: ++YYCURSOR; { return QUOTE_RIGHT_ALT; } -yy220: +yy221: ++YYCURSOR; { return BRACE_DOUBLE_RIGHT; } -yy222: +yy223: ++YYCURSOR; { return BRACKET_IMAGE_LEFT; } -yy224: +yy225: ++YYCURSOR; { return BRACKET_VARIABLE_LEFT; } -yy226: +yy227: ++YYCURSOR; { return BRACKET_CITATION_LEFT; } -yy228: +yy229: ++YYCURSOR; { return BRACKET_FOOTNOTE_LEFT; } -yy230: +yy231: yych = *++YYCURSOR; switch (yych) { - case '}': goto yy231; - default: goto yy64; + case '}': goto yy232; + default: goto yy65; } -yy231: +yy232: ++YYCURSOR; { return CRITIC_HI_CLOSE; } -yy233: +yy234: yych = *++YYCURSOR; switch (yych) { - case '}': goto yy236; - default: goto yy64; + case '}': goto yy237; + default: goto yy65; } -yy234: +yy235: ++YYCURSOR; { return CRITIC_SUB_DIV; } -yy236: +yy237: ++YYCURSOR; { return CRITIC_SUB_CLOSE; } -yy238: +yy239: yych = *++YYCURSOR; switch (yych) { - case '}': goto yy239; - default: goto yy64; + case '}': goto yy240; + default: goto yy65; } -yy239: +yy240: ++YYCURSOR; { return CRITIC_COM_CLOSE; } -yy241: +yy242: ++YYCURSOR; switch ((yych = *YYCURSOR)) { - case '-': goto yy245; - case '}': goto yy243; - default: goto yy242; + case '-': goto yy246; + case '}': goto yy244; + default: goto yy243; } -yy242: - { return DASH_N; } yy243: + { return DASH_N; } +yy244: ++YYCURSOR; { return CRITIC_DEL_CLOSE; } -yy245: +yy246: ++YYCURSOR; { return DASH_M; } -yy247: +yy248: yych = *++YYCURSOR; switch (yych) { - case '}': goto yy248; - default: goto yy64; + case '}': goto yy249; + default: goto yy65; } -yy248: +yy249: ++YYCURSOR; { return CRITIC_ADD_CLOSE; } -yy250: - yyaccept = 8; +yy251: + yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case 'T': goto yy267; - default: goto yy251; + case 'T': goto yy268; + default: goto yy252; } -yy251: - { return BRACE_DOUBLE_LEFT; } yy252: - yych = *++YYCURSOR; - switch (yych) { - case '=': goto yy265; - default: goto yy64; - } + { return BRACE_DOUBLE_LEFT; } yy253: yych = *++YYCURSOR; switch (yych) { - case '~': goto yy263; - default: goto yy64; + case '=': goto yy266; + default: goto yy65; } yy254: yych = *++YYCURSOR; switch (yych) { - case '>': goto yy261; - default: goto yy64; + case '~': goto yy264; + default: goto yy65; } yy255: yych = *++YYCURSOR; switch (yych) { - case '-': goto yy259; - default: goto yy64; + case '>': goto yy262; + default: goto yy65; } yy256: yych = *++YYCURSOR; switch (yych) { - case '+': goto yy257; - default: goto yy64; + case '-': goto yy260; + default: goto yy65; } yy257: + yych = *++YYCURSOR; + switch (yych) { + case '+': goto yy258; + default: goto yy65; + } +yy258: ++YYCURSOR; { return CRITIC_ADD_OPEN; } -yy259: +yy260: ++YYCURSOR; { return CRITIC_DEL_OPEN; } -yy261: +yy262: ++YYCURSOR; { return CRITIC_COM_OPEN; } -yy263: +yy264: ++YYCURSOR; { return CRITIC_SUB_OPEN; } -yy265: +yy266: ++YYCURSOR; { return CRITIC_HI_OPEN; } -yy267: - yych = *++YYCURSOR; - switch (yych) { - case 'O': goto yy268; - default: goto yy64; - } yy268: yych = *++YYCURSOR; switch (yych) { - case 'C': goto yy269; - default: goto yy64; + case 'O': goto yy269; + default: goto yy65; } yy269: yych = *++YYCURSOR; switch (yych) { - case '}': goto yy270; - default: goto yy64; + case 'C': goto yy270; + default: goto yy65; } yy270: yych = *++YYCURSOR; switch (yych) { case '}': goto yy271; - default: goto yy64; + default: goto yy65; } yy271: + yych = *++YYCURSOR; + switch (yych) { + case '}': goto yy272; + default: goto yy65; + } +yy272: ++YYCURSOR; { return TOC; } } diff --git a/src/lexer.re b/src/lexer.re index 6755d08..bc45c10 100644 --- a/src/lexer.re +++ b/src/lexer.re @@ -210,6 +210,7 @@ int scan(Scanner * s, const char * stop) { '#'{6} SP { return HASH6; } '#'{6} / SPNL { return HASH6; } + '#' { return TEXT_HASH; } [0-9]+ / ('.' (SP|NL)) { return TEXT_NUMBER_POSS_LIST; } '.' / (SP|NL) { return TEXT_PERIOD; } diff --git a/src/libMultiMarkdown.h b/src/libMultiMarkdown.h index 28fa018..77111f1 100644 --- a/src/libMultiMarkdown.h +++ b/src/libMultiMarkdown.h @@ -274,6 +274,7 @@ enum token_types { TOC, TEXT_EMPTY, + TEXT_HASH, TEXT_LINEBREAK, TEXT_NL, TEXT_NUMBER_POSS_LIST, diff --git a/src/writer.c b/src/writer.c index f39eaae..095d01b 100644 --- a/src/writer.c +++ b/src/writer.c @@ -675,9 +675,8 @@ char * destination_accept(const char * source, token ** remainder, bool validate t = token_chain_accept_multiple(remainder, 2, PAIR_ANGLE, PAIR_PAREN); url = text_inside_pair(source, t); break; - case SLASH: - case TEXT_PLAIN: - start = (*remainder)->start; + default: + start = (*remainder)->start; // Skip any whitespace while (char_is_whitespace(source[start])) diff --git a/tests/MMD6Tests/Dutch.tex b/tests/MMD6Tests/Dutch.tex deleted file mode 100644 index b383bb9..0000000 --- a/tests/MMD6Tests/Dutch.tex +++ /dev/null @@ -1,15 +0,0 @@ -`foo' - -„foo'' - -foo's - -foo --- bar - -foo -- bar - -5 - -foo{\ldots} - -\footnote{foo} diff --git a/tests/MMD6Tests/English.tex b/tests/MMD6Tests/English.tex deleted file mode 100644 index 2e5381b..0000000 --- a/tests/MMD6Tests/English.tex +++ /dev/null @@ -1,15 +0,0 @@ -`foo' - -``foo'' - -foo's - -foo --- bar - -foo -- bar - -5 - -foo{\ldots} - -\footnote{foo} diff --git a/tests/MMD6Tests/French.tex b/tests/MMD6Tests/French.tex deleted file mode 100644 index 694cc33..0000000 --- a/tests/MMD6Tests/French.tex +++ /dev/null @@ -1,15 +0,0 @@ -'foo' - -«foo» - -foo's - -foo --- bar - -foo -- bar - -5 - -foo{\ldots} - -\footnote{foo} diff --git a/tests/MMD6Tests/German Guillemets.tex b/tests/MMD6Tests/German Guillemets.tex deleted file mode 100644 index 402a768..0000000 --- a/tests/MMD6Tests/German Guillemets.tex +++ /dev/null @@ -1,15 +0,0 @@ -›foo‹ - -»foo« - -foo's - -foo --- bar - -foo -- bar - -5 - -foo{\ldots} - -\footnote{foo} diff --git a/tests/MMD6Tests/German.tex b/tests/MMD6Tests/German.tex deleted file mode 100644 index a2e9fb3..0000000 --- a/tests/MMD6Tests/German.tex +++ /dev/null @@ -1,15 +0,0 @@ -‚foo` - -„foo`` - -foo's - -foo --- bar - -foo -- bar - -5 - -foo{\ldots} - -\footnote{foo} diff --git a/tests/MMD6Tests/Headers.tex b/tests/MMD6Tests/Headers.tex index d665b97..31847a0 100644 --- a/tests/MMD6Tests/Headers.tex +++ b/tests/MMD6Tests/Headers.tex @@ -16,9 +16,9 @@ 5 -#foo# +\#foo\# -#foo # +\#foo \# \part{foo \# bar} \label{foobar} diff --git a/tests/MMD6Tests/Integrated.html b/tests/MMD6Tests/Integrated.html index 7e9fa59..30885d4 100644 --- a/tests/MMD6Tests/Integrated.html +++ b/tests/MMD6Tests/Integrated.html @@ -59,6 +59,10 @@ code

foo

+

bar

+ +

bar

+

Math

math \({e}^{i\pi }+1=0\)

diff --git a/tests/MMD6Tests/Integrated.htmlc b/tests/MMD6Tests/Integrated.htmlc index 2fc962a..b9477cf 100644 --- a/tests/MMD6Tests/Integrated.htmlc +++ b/tests/MMD6Tests/Integrated.htmlc @@ -59,6 +59,10 @@ code

[foo][math]

+

bar

+ +

bar

+

Math

math ${e}^{i\pi }+1=0$

diff --git a/tests/MMD6Tests/Integrated.tex b/tests/MMD6Tests/Integrated.tex index d16d32f..e088faf 100644 --- a/tests/MMD6Tests/Integrated.tex +++ b/tests/MMD6Tests/Integrated.tex @@ -61,10 +61,20 @@ Cite.\citesyntax TBD \href{http://foo.net/}{link}\footnote{\href{http://foo.net/}{http:/\slash foo.net\slash }} and \href{http://bar.net}{link}\footnote{\href{http://bar.net}{http:/\slash bar.net}} +\begin{figure}[htbp] +\centering +\includegraphics[keepaspectratio]{http://foo.bar/} +\caption{test} +\end{figure} + \autoref{math} foo (\autoref{math}) +\autoref{bar} + +\autoref{bar} + \part{Math } \label{math} diff --git a/tests/MMD6Tests/Integrated.text b/tests/MMD6Tests/Integrated.text index 7adf965..744aa3f 100644 --- a/tests/MMD6Tests/Integrated.text +++ b/tests/MMD6Tests/Integrated.text @@ -60,6 +60,13 @@ Cite.[#Inline Citation] [foo][math] +[bar][foo1] + +[bar][foo2] + +[foo1]: #bar +[foo2]: #bar + # Math # diff --git a/tests/MMD6Tests/Swedish.tex b/tests/MMD6Tests/Swedish.tex deleted file mode 100644 index 3a50f0f..0000000 --- a/tests/MMD6Tests/Swedish.tex +++ /dev/null @@ -1,15 +0,0 @@ -'foo' - -''foo'' - -foo's - -foo --- bar - -foo -- bar - -5 - -foo{\ldots} - -\footnote{foo}