Fix indentation error after quotes (#20)

diff --git a/migration/src/jira_util.py b/migration/src/jira_util.py
index 7dcecde..157803f 100644
--- a/migration/src/jira_util.py
+++ b/migration/src/jira_util.py
@@ -6,8 +6,10 @@
 import jira2markdown
 from jira2markdown.elements import MarkupElements
 from jira2markdown.markup.lists import UnorderedList, OrderedList
+from jira2markdown.markup.text_effects import BlockQuote, Quote
 
 from markup.lists import UnorderedTweakedList, OrderedTweakedList
+from markup.text_effects import TweakedBlockQuote, TweakedQuote
 
 @dataclass
 class Attachment(object):
@@ -203,6 +205,8 @@
     elements = MarkupElements()
     elements.replace(UnorderedList, UnorderedTweakedList)
     elements.replace(OrderedList, OrderedTweakedList)
+    elements.replace(BlockQuote, TweakedBlockQuote)
+    elements.replace(Quote, TweakedQuote)
     text = jira2markdown.convert(text, elements=elements)
 
     # markup @ mentions with ``
diff --git a/migration/src/markup/text_effects.py b/migration/src/markup/text_effects.py
new file mode 100644
index 0000000..61f541d
--- /dev/null
+++ b/migration/src/markup/text_effects.py
@@ -0,0 +1,51 @@
+import re
+
+from pyparsing import (
+    ParserElement,
+    ParseResults,
+    QuotedString,
+    StringEnd,
+    StringStart,
+    SkipTo,
+    Literal,
+    LineEnd,
+    Optional,
+    Combine,
+    White,
+    OneOrMore,
+    nums,
+    replaceWith,
+
+)
+
+from jira2markdown.markup.base import AbstractMarkup
+
+class TweakedBlockQuote(AbstractMarkup):
+    def action(self, tokens: ParseResults) -> str:
+        text = self.markup.transformString("\n".join([line.lstrip() for line in tokens[0].strip().splitlines()]))
+        # escape numbered list in quotes.
+        # e.g.,
+        #   {quote}
+        #   2. foo
+        #   5. bar
+        #   {quote}
+        # should be
+        #   > 2\\. foo
+        #   > 5\\. bar
+        pat_ordered_list = re.compile(r"((?<=^\d)||(?<=^\d\d))\.")
+        return "\n".join(["> " + re.sub(pat_ordered_list, '\.', line) for line in text.splitlines()]) + "\n"  # needs additional line feed at the end of quotation to preserve indentation
+
+    @property
+    def expr(self) -> ParserElement:
+        return QuotedString("{quote}", multiline=True).setParseAction(self.action)
+
+
+class TweakedQuote(AbstractMarkup):
+    is_inline_element = False
+
+    @property
+    def expr(self) -> ParserElement:
+        return ("\n" | StringStart()) + Combine(
+            Literal("bq. ").setParseAction(replaceWith("> "))
+            + SkipTo(LineEnd()) + LineEnd().setParseAction(replaceWith("\n\n")) # needs additional line feed at the end of quotation to preserve indentation
+        )