Coverage Summary for Class: InsDelimiterProcessor (io.heapy.kotmark.ext.ins.internal)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| InsDelimiterProcessor |
100%
(1/1)
|
100%
(2/2)
|
83.3%
(5/6)
|
100%
(17/17)
|
100%
(79/79)
|
package io.heapy.kotmark.ext.ins.internal
import io.heapy.kotmark.ext.ins.Ins
import io.heapy.kotmark.node.Nodes
import io.heapy.kotmark.node.SourceSpans
import io.heapy.kotmark.parser.delimiter.DelimiterProcessor
import io.heapy.kotmark.parser.delimiter.DelimiterRun
class InsDelimiterProcessor : DelimiterProcessor {
override val openingCharacter: Char = '+'
override val closingCharacter: Char = '+'
override val minLength: Int = 2
override fun process(
openingRun: DelimiterRun,
closingRun: DelimiterRun,
): Int {
if (openingRun.length() < 2 || closingRun.length() < 2) {
return 0
}
val opener = openingRun.opener
val ins = Ins()
val sourceSpans = SourceSpans.empty()
sourceSpans.addAllFrom(openingRun.getOpeners(2))
for (node in Nodes.between(opener, closingRun.closer)) {
ins.appendChild(node)
sourceSpans.addAll(node.getSourceSpans())
}
sourceSpans.addAllFrom(closingRun.getClosers(2))
ins.setSourceSpans(sourceSpans.getSourceSpans())
opener.insertAfter(ins)
return 2
}
}