# code-block-pro/1.28.0/src/util/arrayHelpers.ts

Code Block Pro – Beautiful Syntax Highlighting, version 1.28.0. 47 lines.

- Page: https://pluginprobe.com/plugins/code-block-pro/1.28.0/code/src/util/arrayHelpers.ts
- Raw: https://pluginprobe.com/plugins/code-block-pro/1.28.0/raw/src/util/arrayHelpers.ts
- Modified: 2026-04-12T13:22:22+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/code-block-pro/1.28.0/code/src/util/arrayHelpers.ts#L10-L20`.

```typescript
export const parseJSONArrayWithRanges = (
	lineNumbers: string,
	startingLineNumber: string,
) => {
	try {
		return (
			JSON.parse(`[${lineNumbers ?? ''}]`)
				.map((inner: number | number[]) => {
					// offset by startingLineNumber
					const offset = Number.isNaN(Number(startingLineNumber))
						? 0
						: Math.max(Number(startingLineNumber) - 1, 0);
					// incoming might look like 1, 3, or [4, 8]
					if (typeof inner === 'number') return inner - offset;
					return Array.from(
						{ length: inner[1] - inner[0] + 1 },
						(_, i) => inner[0] + i - offset,
					);
				})
				// filter out empty arrays
				.filter((inner: number | number[]) =>
					Array.isArray(inner) ? inner?.length > 0 : true,
				)
				.flat()
				// filter out negative numbers
				.filter((inner: number) => inner >= 0)
		);
	} catch (e) {
		console.error(e);
		return [];
	}
};

export const parseStringArrayWithSingleNestedArray = (lineNumbers?: string) => {
	const nums = JSON.parse(`[${lineNumbers ?? ''}]`);
	// Checking for nested arrays
	const nested = nums.filter((n: number | number[]) => Array.isArray(n));
	const doubly = nested.some((n: number[]) => n.some((k) => Array.isArray(k)));
	if (doubly) {
		throw new Error('Nested arrays not allowed');
	}
	if (nested.some((n: number[]) => n[0] >= n[1])) {
		throw new Error('Nested arrays must be in order');
	}
	return true;
};

```
