forked from github/cinny
fix: prevent codeblock filename drop on edit (#2780)
prevent codeblock filename drop on edit
This commit is contained in:
@@ -228,9 +228,13 @@ const parseCodeBlockNode = (node: Element): CodeBlockElement[] | ParagraphElemen
|
|||||||
children: [{ text }],
|
children: [{ text }],
|
||||||
}));
|
}));
|
||||||
const childCode = node.children[0];
|
const childCode = node.children[0];
|
||||||
const className =
|
const attribs =
|
||||||
isTag(childCode) && childCode.tagName === 'code' ? childCode.attribs.class ?? '' : '';
|
isTag(childCode) && childCode.tagName === 'code' ? childCode.attribs : undefined;
|
||||||
const prefix = { text: `${mdSequence}${className.replace('language-', '')}` };
|
const languageClass = attribs?.class;
|
||||||
|
const customLabel = attribs?.['data-label'];
|
||||||
|
const prefix = {
|
||||||
|
text: `${mdSequence}${customLabel ?? languageClass?.replace('language-', '') ?? ''}`,
|
||||||
|
};
|
||||||
const suffix = { text: mdSequence };
|
const suffix = { text: mdSequence };
|
||||||
return [
|
return [
|
||||||
{ type: BlockType.Paragraph, children: [prefix] },
|
{ type: BlockType.Paragraph, children: [prefix] },
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ export const CodeBlockRule: BlockMDRule = {
|
|||||||
const [, g1, g2] = match;
|
const [, g1, g2] = match;
|
||||||
// use last identifier after dot, e.g. for "example.json" gets us "json" as language code.
|
// use last identifier after dot, e.g. for "example.json" gets us "json" as language code.
|
||||||
const langCode = g1 ? g1.substring(g1.lastIndexOf('.') + 1) : null;
|
const langCode = g1 ? g1.substring(g1.lastIndexOf('.') + 1) : null;
|
||||||
const filename = g1 != langCode ? g1 : null;
|
const filename = g1 !== langCode ? g1 : null;
|
||||||
const classNameAtt = langCode ? ` class="language-${langCode}"` : '';
|
const classNameAtt = langCode ? ` class="language-${langCode}"` : '';
|
||||||
const filenameAtt = filename ? ` data-label="${filename}"` : '';
|
const filenameAtt = filename ? ` data-label="${filename}"` : '';
|
||||||
return `<pre data-md="${CODEBLOCK_MD_1}"><code${classNameAtt}${filenameAtt}>${g2}</code></pre>`;
|
return `<pre data-md="${CODEBLOCK_MD_1}"><code${classNameAtt}${filenameAtt}>${g2}</code></pre>`;
|
||||||
|
|||||||
Reference in New Issue
Block a user