babycode: handle code tag being inline or block explicitly in is_inline

This commit is contained in:
2025-08-16 17:37:05 +03:00
parent 9238385244
commit 4f88d14b45

View File

@ -116,8 +116,9 @@ TAGS = {
"spoiler": tag_spoiler, "spoiler": tag_spoiler,
} }
# [img] and [code] are considered block for the purposes of collapsing whitespace, # [img] is considered block for the purposes of collapsing whitespace,
# despite being potentially inline ([img] is particularly egregious, since the resulting <img> tag is inline, but creates a block container around itself and sibling images) # despite being potentially inline (since the resulting <img> tag is inline, but creates a block container around itself and sibling images).
# [code] has a special case in is_inline().
INLINE_TAGS = { INLINE_TAGS = {
'b', 'i', 's', 'u', 'color', 'big', 'small', 'url' 'b', 'i', 's', 'u', 'color', 'big', 'small', 'url'
} }
@ -186,6 +187,9 @@ def is_inline(e):
return True return True
if is_tag(e): if is_tag(e):
if is_tag(e, 'code'): # special case, since [code] can be inline OR block
return '\n' not in e['children']
return e['name'] in INLINE_TAGS return e['name'] in INLINE_TAGS
return e['type'] != 'rule' return e['type'] != 'rule'
@ -238,7 +242,6 @@ def babycode_to_html(s):
) )
_nobr = element['name'] == "code" or element['name'] == "ul" or element['name'] == "ol" _nobr = element['name'] == "code" or element['name'] == "ul" or element['name'] == "ol"
c = c + fold(child, _nobr, _surrounding) c = c + fold(child, _nobr, _surrounding)
res = TAGS[element['name']](c, element['attr'], surrounding) res = TAGS[element['name']](c, element['attr'], surrounding)
return res return res
case "link": case "link":