override fun matches()

in vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CollectionMatcher.kt [32:56]


  override fun matches(
    editor: VimEditor,
    index: Int,
    groups:
    VimMatchGroupCollection,
    isCaseInsensitive: Boolean,
    possibleCursors: MutableList<VimCaret>,
  ): MatcherResult {
    if (index >= editor.text().length) return MatcherResult.Failure

    if (!includesEOL && editor.text()[index] == '\n') return MatcherResult.Failure
    if (includesEOL && editor.text()[index] == '\n') return MatcherResult.Success(1)

    val char = editor.text()[index]
    val result = if (isCaseInsensitive && !forceNoIgnoreCase) (chars.map { it.lowercaseChar() }
      .contains(char.lowercaseChar()) || ranges.any {
      it.inRange(
        char,
        true
      )
    } || charClasses.any { it(char.lowercaseChar()) || it(char.uppercaseChar()) }) == !isNegated
    else (chars.contains(char) || ranges.any { it.inRange(char) } || charClasses.any { it(char) }) == !isNegated
    return if (result) MatcherResult.Success(1)
    else MatcherResult.Failure
  }