override fun advance()

in src/main/kotlin/com/intellij/ideolog/lex/LogFileLexer.kt [41:73]


  override fun advance() {
    val newTokenStart = if (currentTokenEnd < 0) myBufferStart else currentTokenEnd
    currentTokenType = null
    var newTokenPosition = newTokenStart

    if (newTokenPosition >= myBufferEnd)
      return

    var seenNewLine = false
    while (true) {
      if (newTokenPosition >= myBufferEnd || !seenNewLine && myBuffer[newTokenPosition] == '|')
        break
      if (myBuffer[newTokenPosition] == '\n') {
        seenNewLine = true
        if (!findEventStart || fileType.isLineEventStart(myBuffer.subSequence(newTokenPosition + 1, myBufferEnd))) break
      }
      newTokenPosition++
    }

    if (newTokenPosition == newTokenStart)
      newTokenPosition++

    currentTokenStart = newTokenStart
    currentTokenEnd = newTokenPosition
    if (newTokenStart == newTokenPosition - 1 && myBuffer[newTokenStart].let { it == '|' || it == '\n' }) {
      currentTokenType = LOG_TOKEN_SEPARATOR
      if (myBuffer[newTokenStart] == '\n')
        myColumn = 0
      else
        myColumn++
    } else
      currentTokenType = getOrMakeElementToken()
  }