[DS-5493] simplify NotebookCellLinesLexer

GitOrigin-RevId: ae8d26f68d46f2bd9b1dffd8f6ecae8bb0de479c
This commit is contained in:
Igor Slobodskov
2023-08-15 18:32:56 +02:00
committed by intellij-monorepo-bot
parent 81644065a0
commit 026df603f0
3 changed files with 10 additions and 8 deletions

View File

@@ -17,14 +17,14 @@ interface NotebookCellLinesLexer {
val type: CellType,
val offset: Int,
val length: Int,
var language: Language? = null
val language: Language,
) : Comparable<Marker> {
override fun compareTo(other: Marker): Int = offset - other.offset
}
companion object {
fun defaultMarkerSequence(underlyingLexerFactory: () -> Lexer,
tokenToCellType: (IElementType) -> CellType?,
getCellLanguageAndType: (IElementType, lexer: Lexer) -> Pair<Language, CellType>?,
chars: CharSequence,
ordinalIncrement: Int,
offsetIncrement: Int): Sequence<Marker> = sequence {
@@ -33,14 +33,16 @@ interface NotebookCellLinesLexer {
var ordinal = 0
while (true) {
val tokenType = lexer.tokenType ?: break
val cellType = tokenToCellType(tokenType)
val cellLanguageAndType = getCellLanguageAndType(tokenType, lexer)
if (cellType != null) {
if (cellLanguageAndType != null) {
val (language, type) = cellLanguageAndType
yield(Marker(
ordinal = ordinal++ + ordinalIncrement,
type = cellType,
type = type,
offset = lexer.currentPosition.offset + offsetIncrement,
length = lexer.tokenText.length,
language = language,
))
}
lexer.advance()
@@ -75,7 +77,7 @@ private fun toIntervalsInfo(document: Document,
}
for (marker in markers) {
m += IntervalInfo(document.getLineNumber(marker.offset), marker.type, MarkersAtLines.TOP, marker.language!!) // marker.language is provided in makeIntervals
m += IntervalInfo(document.getLineNumber(marker.offset), marker.type, MarkersAtLines.TOP, marker.language) // marker.language is provided in makeIntervals
}
// marker for the end

View File

@@ -101,7 +101,7 @@ val NotebookCellLines.Interval.contentLines: IntRange
fun makeMarkersFromIntervals(document: Document, intervals: Iterable<NotebookCellLines.Interval>): List<NotebookCellLinesLexer.Marker> {
val markers = ArrayList<NotebookCellLinesLexer.Marker>()
fun addMarker(line: Int, type: NotebookCellLines.CellType, language: Language? = null) {
fun addMarker(line: Int, type: NotebookCellLines.CellType, language: Language) {
val startOffset = document.getLineStartOffset(line)
val endOffset =
if (line + 1 < document.lineCount) document.getLineStartOffset(line + 1)

View File

@@ -18,7 +18,7 @@ class CodeCellLinesChecker(private val description: String,
markers = mutableListOf()
}
fun marker(cellType: NotebookCellLines.CellType, offset: Int, length: Int, language: Language? = null) {
fun marker(cellType: NotebookCellLines.CellType, offset: Int, length: Int, language: Language) {
markers!!.add(
NotebookCellLinesLexer.Marker(ordinal = markers!!.size + markersStartOrdinal, type = cellType, offset = offset, length = length,
language = language))