From a5973fc991ca85bfa40cc1644a0de30b4f7f799d Mon Sep 17 00:00:00 2001 From: Miroma Date: Wed, 25 Feb 2026 11:56:23 +0100 Subject: [PATCH] refactor: use inner function --- .../node/markdown/plugins/snippet.test.ts | 63 +------------------ src/node/markdown/plugins/snippet.ts | 29 +++++---- 2 files changed, 15 insertions(+), 77 deletions(-) diff --git a/__tests__/unit/node/markdown/plugins/snippet.test.ts b/__tests__/unit/node/markdown/plugins/snippet.test.ts index 15f72fc50..4d118f628 100644 --- a/__tests__/unit/node/markdown/plugins/snippet.test.ts +++ b/__tests__/unit/node/markdown/plugins/snippet.test.ts @@ -1,8 +1,7 @@ import { dedent, findRegions, - rawPathToToken, - stripMarkers + rawPathToToken } from 'node/markdown/plugins/snippet' import { expect } from 'vitest' @@ -428,64 +427,4 @@ describe('node/markdown/plugins/snippet', () => { } }) }) - - describe('stripRegionMarkers', () => { - it('removes #region and #endregion lines', () => { - const src = [ - '// #region A', - '// #region B', - 'console.log("Hello, World!");', - '// #endregion B', - '// #endregion A' - ] - expect(stripMarkers(src, true)).toBe('console.log("Hello, World!");') - }) - - it('does not remove any marker if stripRegionMarkers is false', () => { - const src = [ - '// #region A', - '// #region B', - 'console.log("Hello, World!");', - '// #endregion B', - '// #endregion A' - ] - expect(stripMarkers(src, false)).toBe(src.join('\n')) - }) - - it('removes region markers for various syntaxes', () => { - const src = [ - '', - '
hi
', - '', - '/* #region css */', - 'body {}', - '/* #endregion css */', - '#pragma region cpp', - 'int main(){}', - '#pragma endregion cpp', - '::#region bat', - 'ECHO ON', - 'REM #endregion bat' - ] - const out = stripMarkers(src, true) - expect(out).not.toContain('#region') - expect(out).not.toContain('#endregion') - expect(out).toContain('
hi
') - expect(out).toContain('body {}') - expect(out).toContain('int main(){}') - expect(out).toContain('ECHO ON') - }) - - it('removes markers even if indented or with extra spaces', () => { - const src = [ - ' // #region spaced ', - '\t/* #region */', - 'code();', - ' // #endregion spaced', - '/* #endregion */' - ] - const out = stripMarkers(src, true) - expect(out.trim()).toBe('code();') - }) - }) }) diff --git a/src/node/markdown/plugins/snippet.ts b/src/node/markdown/plugins/snippet.ts index 87ba8da14..a8f3be5f8 100644 --- a/src/node/markdown/plugins/snippet.ts +++ b/src/node/markdown/plugins/snippet.ts @@ -126,23 +126,23 @@ export function findRegions(lines: string[], regionName: string) { return returned } -export function stripMarkers(lines: string[], stripMarkers: boolean): string { - if (!stripMarkers) return lines.join('\n') - return lines - .filter((l) => { - for (const m of markers) { - if (m.start.test(l) || m.end.test(l)) return false - } - return true - }) - .join('\n') -} - export const snippetPlugin = ( md: MarkdownItAsync, srcDir: string, stripMarkersFromSnippets = false ) => { + function stripMarkers(lines: string[]): string { + if (!stripMarkersFromSnippets) return lines.join('\n') + return lines + .filter((l) => { + for (const m of markers) { + if (m.start.test(l) || m.end.test(l)) return false + } + return true + }) + .join('\n') + } + const parser: RuleBlock = (state, startLine, endLine, silent) => { const CH = '<'.charCodeAt(0) const pos = state.bMarks[startLine] + state.tShift[startLine] @@ -231,8 +231,7 @@ export const snippetPlugin = ( lines .slice(r.start, r.end) .filter((l) => !(r.re.start.test(l) || r.re.end.test(l))) - ), - stripMarkersFromSnippets + ) ) ) } else { @@ -241,7 +240,7 @@ export const snippetPlugin = ( return fence(...args) } } else { - content = stripMarkers(content.split('\n'), stripMarkersFromSnippets) + content = stripMarkers(content.split('\n')) } token.content = content