src/main/kotlin/com/eny/i18n/extensions/lang/js/extractors/JsFoldingProvider.kt
package com.eny.i18n.extensions.lang.js.extractors
import com.eny.i18n.plugin.factory.FoldingProvider
import com.eny.i18n.plugin.utils.default
import com.intellij.lang.javascript.patterns.JSPatterns
import com.intellij.lang.javascript.psi.JSCallExpression
import com.intellij.lang.javascript.psi.JSLiteralExpression
import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiElement
import com.intellij.psi.util.PsiTreeUtil
internal class JsFoldingProvider: FoldingProvider {
override fun collectContainers(root: PsiElement): List<PsiElement> =
PsiTreeUtil
.findChildrenOfType(root, JSLiteralExpression::class.java)
.filter { JSPatterns.jsArgument("t", 0).accepts(it)}
override fun collectLiterals(container: PsiElement): Pair<List<PsiElement>, Int> = Pair(listOf(container), 0)
override fun getFoldingRange(container: PsiElement, offset: Int, psiElement: PsiElement): TextRange =
PsiTreeUtil.getParentOfType(psiElement, JSCallExpression::class.java).default(psiElement).textRange
}