@@ -178,6 +178,10 @@ var indentR = regexp.MustCompile(`(?m)\n`)
178178
179179func (conv * Converter ) applyRules (nodeName , markdown string , selec * goquery.Selection , opt * Options ) (AdvancedResult , bool ) {
180180 rules := conv .getRuleFuncs (nodeName )
181+ if rules == nil {
182+ // Tag is in remove map, return empty result
183+ return AdvancedResult {}, false
184+ }
181185 for i := len (rules ) - 1 ; i >= 0 ; i -- {
182186 res , skip := rules [i ](markdown , selec , opt )
183187 if ! skip {
@@ -211,10 +215,22 @@ func (conv *Converter) selecToMD(selec *goquery.Selection, opt *Options) Advance
211215 var builder strings.Builder
212216
213217 selec .Contents ().Each (func (i int , s * goquery.Selection ) {
218+ nodeName := goquery .NodeName (s )
219+
220+ // Check if this element should be removed before processing
221+ conv .mutex .RLock ()
222+ _ , shouldRemove := conv .remove [nodeName ]
223+ conv .mutex .RUnlock ()
224+
225+ if shouldRemove {
226+ // Skip processing removed elements entirely
227+ return
228+ }
229+
214230 content := conv .selecToMD (s , opt )
215231 result .accumulate (content )
216232
217- ruleResult , useOriginal := conv .applyRules (goquery . NodeName ( s ) , content .Markdown , s , opt )
233+ ruleResult , useOriginal := conv .applyRules (nodeName , content .Markdown , s , opt )
218234 result .accumulate (ruleResult )
219235
220236 if ! useOriginal {
0 commit comments