From 6f77283c2cf3906816fcb315e53fdb237acd9a3c Mon Sep 17 00:00:00 2001 From: Roberto Santalla Date: Tue, 8 Oct 2019 16:38:41 +0200 Subject: [PATCH] Format fenced code blocks --- main/src/ui/util/helper.vala | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/main/src/ui/util/helper.vala b/main/src/ui/util/helper.vala index 0f0e6e7b..f936ed4f 100644 --- a/main/src/ui/util/helper.vala +++ b/main/src/ui/util/helper.vala @@ -343,6 +343,24 @@ public static string parse_add_markup(string s_, string? highlight_word, bool pa } if (parse_text_markup) { + // Try to match preformatted code blocks first + try { + Regex regex = new Regex("(?:^|\n)(```(?:(?!\n\n|```)(?:.|\n))+(?:$|```|\n\n))"); + MatchInfo match_info; + regex.match(s.down().strip(), 0, out match_info); + if (match_info.matches()) { + int start, end; + match_info.fetch_pos(1, out start, out end); + return parse_add_markup(s[0:start], highlight_word, parse_links, parse_text_markup, already_escaped) + + "" + + s[start:end] + + "" + + parse_add_markup(s[end:s.length], highlight_word, parse_links, parse_text_markup, already_escaped); + } + } catch (RegexError e) { + assert_not_reached(); + } + string[] markup_string = new string[]{"`", "_", "*"}; string[] convenience_tag = new string[]{"tt", "i", "b"};