You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by to...@apache.org on 2022/08/08 11:29:25 UTC

[lucene-jira-archive] 01/01: insert linefeeds before/after a code block

This is an automated email from the ASF dual-hosted git repository.

tomoko pushed a commit to branch fix-broken-code-block
in repository https://gitbox.apache.org/repos/asf/lucene-jira-archive.git

commit 1f8ef30b8e3b04b2633730debbdd375085cfad8a
Author: Tomoko Uchida <to...@gmail.com>
AuthorDate: Mon Aug 8 20:29:15 2022 +0900

    insert linefeeds before/after a code block
---
 migration/src/jira_util.py       |  3 +++
 migration/src/markup/advanced.py | 34 ++++++++++++++++++++++++++++++++++
 2 files changed, 37 insertions(+)

diff --git a/migration/src/jira_util.py b/migration/src/jira_util.py
index 985ebfba..bdd07457 100644
--- a/migration/src/jira_util.py
+++ b/migration/src/jira_util.py
@@ -7,10 +7,12 @@ from typing import Optional
 
 import jira2markdown
 from jira2markdown.elements import MarkupElements
+from jira2markdown.markup.advanced import Code
 from jira2markdown.markup.lists import UnorderedList, OrderedList
 from jira2markdown.markup.text_effects import BlockQuote, Quote, Monospaced
 from jira2markdown.markup.text_breaks import Ruler
 
+from markup.advanced import TweakedCode
 from markup.lists import UnorderedTweakedList, OrderedTweakedList
 from markup.text_effects import EscapeHtmlTag, TweakedBlockQuote, TweakedQuote, TweakedMonospaced
 from markup.text_breaks import LongRuler
@@ -330,6 +332,7 @@ def convert_text(text: str, att_replace_map: dict[str, str] = {}, account_map: d
 
     # convert Jira markup into Markdown with customization
     elements = MarkupElements()
+    elements.replace(Code, TweakedCode)
     elements.replace(UnorderedList, UnorderedTweakedList)
     elements.replace(OrderedList, OrderedTweakedList)
     elements.replace(BlockQuote, TweakedBlockQuote)
diff --git a/migration/src/markup/advanced.py b/migration/src/markup/advanced.py
new file mode 100644
index 00000000..20ec8478
--- /dev/null
+++ b/migration/src/markup/advanced.py
@@ -0,0 +1,34 @@
+from pyparsing import (
+    Combine,
+    FollowedBy,
+    Literal,
+    Optional,
+    ParserElement,
+    ParseResults,
+    SkipTo,
+    Word,
+    alphanums,
+)
+
+from jira2markdown.markup.base import AbstractMarkup
+
+
+class TweakedCode(AbstractMarkup):
+    def action(self, tokens: ParseResults) -> str:
+        lang = tokens.lang or "Java"
+        text = tokens.text.strip("\n")
+        # insert '\n' before and after the code block.
+        return f"\n```{lang}\n{text}\n```\n"
+
+    @property
+    def expr(self) -> ParserElement:
+        return Combine(
+            "{code"
+            + Optional(
+                ":" + Word(alphanums + "#+").setResultsName("lang") + FollowedBy(Literal("}") | Literal("|")),
+            )
+            + ...
+            + "}"
+            + SkipTo("{code}").setResultsName("text")
+            + "{code}",
+        ).setParseAction(self.action)