private testChar()

in src/language/semantics/xslLexer.ts [582:634]


  private testChar(
    char: string,
    nextChar: string,
    isText: boolean
  ): XMLCharState {
    let rc: XMLCharState

    switch (char) {
      case ' ':
      case '\t':
      case '\r':
        if (isText) {
          rc = XMLCharState.lText
        } else {
          rc = XMLCharState.lWs
        }
        break
      case '\n':
        rc = XMLCharState.lWs
        break
      case '<':
        switch (nextChar) {
          case '?':
            rc = XMLCharState.lPi
            break
          case '!':
            rc = XMLCharState.lExclam
            break
          case '/':
            rc = XMLCharState.lCt
            break
          default:
            rc = XMLCharState.lSt
        }
        break
      case '{':
        if (nextChar === '{') {
          rc = XMLCharState.escTvt
        } else {
          rc = XMLCharState.tvt
        }
        break
      case '&':
        // TODO: check next char is not ';'
        rc = XMLCharState.lEntity
        this.entityContext = EntityPosition.text
        break
      default:
        rc = XMLCharState.lText
        break
    }
    return rc
  }