mayurankv_Obsidian-Code-Styler/src/Internal/Detecting/LivePreview/inline.ts
2025-02-16 17:10:37 +00:00

40 lines
1.5 KiB
TypeScript

import { syntaxTree } from "@codemirror/language";
import { EditorState, Range, RangeSetBuilder } from "@codemirror/state";
import { Decoration, DecorationSet, EditorView } from "@codemirror/view";
import { SyntaxNodeRef } from "@lezer/common";
import { getInlineDelimiterSize, isFileIgnored } from "src/internal/Decorating/LivePreview/codemirror/utils";
import { parseInlineCodeParameters, splitInlineCodeRaw } from "src/internal/parsing/inline";
import { InlineCodeInfo } from "src/internal/types/detecting";
import CodeStylerPlugin from "src/main";
export function getInlineCodeInfo(
state: EditorState,
syntaxNode: SyntaxNodeRef,
): InlineCodeInfo | null {
const delimiterSize = getInlineDelimiterSize(syntaxNode);
if (delimiterSize === null)
return null;
const inlineCodeRaw = state.doc.sliceString(syntaxNode.from, syntaxNode.to);
const {inlineCodeParametersLine, inlineCodeContent} = splitInlineCodeRaw(inlineCodeRaw);
const inlineCodeParameters = parseInlineCodeParameters((inlineCodeParametersLine ?? "") + " ");
const inlineCodeParametersLineLength = (inlineCodeParametersLine ?? "").length
return {
parameters: {
from: syntaxNode.from,
to: syntaxNode.from + inlineCodeParametersLineLength,
value: inlineCodeParameters,
},
content: {
from: syntaxNode.from + inlineCodeParametersLineLength + 1,
to: syntaxNode.to,
value: inlineCodeContent,
},
section: {
from: syntaxNode.from - delimiterSize,
to: syntaxNode.to + delimiterSize,
}
};
}