import { syscall } from "./lib/syscall";

export async function toggleH1() {
  await togglePrefix("# ");
}

export async function toggleH2() {
  await togglePrefix("## ");
}

function lookBack(s: string, pos: number, backString: string): boolean {
  return s.substring(pos - backString.length, pos) === backString;
}

async function togglePrefix(prefix: string) {
  let text = (await syscall("editor.getText")) as string;
  let pos = (await syscall("editor.getCursor")) as number;
  if (text[pos] === "\n") {
    pos--;
  }
  while (pos > 0 && text[pos] !== "\n") {
    if (lookBack(text, pos, prefix)) {
      // Already has this prefix, let's flip it
      await syscall("editor.replaceRange", pos - prefix.length, pos, "");
      return;
    }
    pos--;
  }
  if (pos) {
    pos++;
  }
  await syscall("editor.insertAtPos", prefix, pos);
}