Radish alpha
r
Radicle desktop app
Radicle
Git (anonymous pull)
Log in to clone via SSH
Remove unusued `lineNumbersGutter` fn
Sebastian Martinez committed 1 year ago
commit 665c5a96bdc6a1befb3c0a3cc4365a15e7fc6149
parent 3b29598c771f1e9aad82c5463af573834be82395
1 file changed +1 -116
modified src/lib/syntax.ts
@@ -1,4 +1,4 @@
-
import type { ElementContent, Root } from "hast";
+
import type { Root } from "hast";

import onigurumaWASMUrl from "vscode-oniguruma/release/onig.wasm?url";
import sourceAsciiDoc from "@wooorm/starry-night/text.html.asciidoc";
@@ -122,118 +122,3 @@ export async function highlight(
  const scope = starryNight.flagToScope(grammar);
  return starryNight.highlight(content, scope ?? "text.raw");
}
-

-
export function lineNumbersGutter(tree: Root) {
-
  const replacement: ElementContent[] = [];
-
  const search = /\r?\n|\r/g;
-
  let index = -1;
-
  let start = 0;
-
  let startTextRemainder = "";
-
  let lineNumber = 0;
-

-
  while (++index < tree.children.length) {
-
    const child = tree.children[index];
-

-
    if (child.type === "text") {
-
      let textStart = 0;
-
      let match = search.exec(child.value);
-

-
      while (match) {
-
        // Nodes in this line.
-
        const line = tree.children.slice(start, index) as ElementContent[];
-

-
        // Prepend text from a partial matched earlier text.
-
        if (startTextRemainder) {
-
          line.unshift({ type: "text", value: startTextRemainder });
-
          startTextRemainder = "";
-
        }
-

-
        // Append text from this text.
-
        if (match.index > textStart) {
-
          line.push({
-
            type: "text",
-
            value: child.value.slice(textStart, match.index),
-
          });
-
        }
-

-
        // Add a line, and the eol.
-
        lineNumber += 1;
-
        replacement.push(createLine(line, lineNumber), {
-
          type: "text",
-
          value: match[0],
-
        });
-

-
        start = index + 1;
-
        textStart = match.index + match[0].length;
-
        match = search.exec(child.value);
-
      }
-

-
      // If we matched, make sure to not drop the text after the last line ending.
-
      if (start === index + 1) {
-
        startTextRemainder = child.value.slice(textStart);
-
      }
-
    }
-
  }
-

-
  const line = tree.children.slice(start) as ElementContent[];
-
  // Prepend text from a partial matched earlier text.
-
  if (startTextRemainder) {
-
    line.unshift({ type: "text", value: startTextRemainder });
-
    startTextRemainder = "";
-
  }
-

-
  if (line.length > 0) {
-
    lineNumber += 1;
-
    replacement.push(createLine(line, lineNumber));
-
  }
-

-
  // Replace children with new array.
-
  tree.children = replacement;
-

-
  return tree;
-
}
-

-
function createLine(children: ElementContent[], line: number): ElementContent {
-
  return {
-
    type: "element",
-
    tagName: "tr",
-
    properties: {
-
      class: "line",
-
      id: "L" + line,
-
    },
-
    children: [
-
      {
-
        type: "element",
-
        tagName: "td",
-
        properties: {
-
          className: "line-number",
-
        },
-
        children: [
-
          {
-
            type: "element",
-
            tagName: "a",
-
            properties: { href: "#L" + line },
-
            children: [{ type: "text", value: line.toString() }],
-
          },
-
        ],
-
      },
-
      {
-
        type: "element",
-
        tagName: "td",
-
        properties: {
-
          className: "line-content",
-
        },
-
        children: [
-
          {
-
            type: "element",
-
            tagName: "pre",
-
            properties: {
-
              className: "content",
-
            },
-
            children,
-
          },
-
        ],
-
      },
-
    ],
-
  };
-
}