1+ from  typing  import  TYPE_CHECKING , Optional 
2+ 
13from  django .apps  import  apps 
24from  django .core .exceptions  import  MultipleObjectsReturned , ObjectDoesNotExist 
35from  markdown  import  Extension 
68    LINK_RE ,
79    ImageInlineProcessor ,
810    LinkInlineProcessor ,
11+     SimpleTagInlineProcessor ,
912)
1013from  wagtail .documents  import  get_document_model 
1114from  wagtail .images  import  get_image_model 
1215from  wagtail .images .exceptions  import  InvalidFilterSpecError 
1316from  wagtail .models  import  Page 
1417
1518
19+ if  TYPE_CHECKING :
20+     from  markdown  import  Markdown 
21+ 
22+ 
1623def  _options_to_dict (value : str ) ->  dict :
1724    """ 
1825    Takes a "key=value,key2=value2" string and converts it to a dict 
@@ -39,7 +46,7 @@ class ObjectLookupNegotiator:
3946    MEDIA_PREFIX  =  "media:" 
4047
4148    @staticmethod  
42-     def  retrieve_page (lookup_field_value ):
49+     def  retrieve_page (lookup_field_value )  ->   Optional [ Page ] :
4350        try :
4451            return  Page .objects .get (pk = lookup_field_value )
4552        except  (Page .DoesNotExist , Page .MultipleObjectsReturned ):
@@ -131,13 +138,17 @@ def getLink(self, data, index):
131138
132139
133140class  ImageExtension (Extension ):
134-     def  __init__ (self , object_lookup_negotiator = None , ** kwargs ):
141+     def  __init__ (
142+         self ,
143+         object_lookup_negotiator : Optional [ObjectLookupNegotiator ] =  None ,
144+         ** kwargs ,
145+     ):
135146        self .object_lookup_negotiator  =  (
136147            object_lookup_negotiator  or  ObjectLookupNegotiator 
137148        )
138149        super ().__init__ (** kwargs )
139150
140-     def  extendMarkdown (self , md ) :
151+     def  extendMarkdown (self , md :  "Markdown" )  ->   None :
141152        md .inlinePatterns .register (
142153            ImageProcessor (
143154                pattern = IMAGE_LINK_RE ,
@@ -150,13 +161,17 @@ def extendMarkdown(self, md):
150161
151162
152163class  LinkExtension (Extension ):
153-     def  __init__ (self , object_lookup_negotiator = None , ** kwargs ):
164+     def  __init__ (
165+         self ,
166+         object_lookup_negotiator : Optional [ObjectLookupNegotiator ] =  None ,
167+         ** kwargs ,
168+     ):
154169        self .object_lookup_negotiator  =  (
155170            object_lookup_negotiator  or  ObjectLookupNegotiator 
156171        )
157172        super ().__init__ (** kwargs )
158173
159-     def  extendMarkdown (self , md ) :
174+     def  extendMarkdown (self , md :  "Markdown" )  ->   None :
160175        md .inlinePatterns .register (
161176            LinkProcessor (
162177                pattern = LINK_RE ,
@@ -166,3 +181,11 @@ def extendMarkdown(self, md):
166181            "link" ,
167182            161 ,
168183        )
184+ 
185+ 
186+ class  DelExtension (Extension ):
187+     def  extendMarkdown (self , md : "Markdown" ) ->  None :
188+         """Supports ~TEXT~ and ~~TEXT~~ syntax.""" 
189+         md .inlinePatterns .register (
190+             SimpleTagInlineProcessor (r"(\~{1,2})(.+?)\1" , "del" ), "tilde del" , 170 
191+         )
0 commit comments