clash-brush-parser 0.3.0

POSIX/bash shell tokenizer and parsers (used by brush-shell)
Documentation
---
source: clash-brush-parser/src/tokenizer.rs
assertion_line: 1403
expression: "test_tokenizer(r\"cat <<HERE\nSOMETHING\nHERE\necho after\n\")?"
---
TokenizerResult(
  input: "cat <<HERE\nSOMETHING\nHERE\necho after\n",
  result: [
    Word("cat", SourceSpan(
      start: SourcePosition(
        index: 0,
        line: 1,
        column: 1,
      ),
      end: SourcePosition(
        index: 3,
        line: 1,
        column: 4,
      ),
    )),
    Operator("<<", SourceSpan(
      start: SourcePosition(
        index: 4,
        line: 1,
        column: 5,
      ),
      end: SourcePosition(
        index: 6,
        line: 1,
        column: 7,
      ),
    )),
    Word("HERE", SourceSpan(
      start: SourcePosition(
        index: 6,
        line: 1,
        column: 7,
      ),
      end: SourcePosition(
        index: 10,
        line: 1,
        column: 11,
      ),
    )),
    Word("SOMETHING\n", SourceSpan(
      start: SourcePosition(
        index: 11,
        line: 2,
        column: 1,
      ),
      end: SourcePosition(
        index: 26,
        line: 4,
        column: 1,
      ),
    )),
    Word("HERE", SourceSpan(
      start: SourcePosition(
        index: 26,
        line: 4,
        column: 1,
      ),
      end: SourcePosition(
        index: 26,
        line: 4,
        column: 1,
      ),
    )),
    Operator("\n", SourceSpan(
      start: SourcePosition(
        index: 10,
        line: 1,
        column: 11,
      ),
      end: SourcePosition(
        index: 11,
        line: 2,
        column: 1,
      ),
    )),
    Word("echo", SourceSpan(
      start: SourcePosition(
        index: 26,
        line: 4,
        column: 1,
      ),
      end: SourcePosition(
        index: 30,
        line: 4,
        column: 5,
      ),
    )),
    Word("after", SourceSpan(
      start: SourcePosition(
        index: 31,
        line: 4,
        column: 6,
      ),
      end: SourcePosition(
        index: 36,
        line: 4,
        column: 11,
      ),
    )),
    Operator("\n", SourceSpan(
      start: SourcePosition(
        index: 36,
        line: 4,
        column: 11,
      ),
      end: SourcePosition(
        index: 37,
        line: 5,
        column: 1,
      ),
    )),
  ],
)