export function getItemsForLineLT2()

in src/language/providers/closeUtils.ts [291:396]


export function getItemsForLineLT2(
  document: vscode.TextDocument,
  triggerText: string,
  triggerLine: number,
  nsPrefix: string,
  items: string[],
  i: number
) {
  let [currentText, currentLine] = [triggerText, triggerLine]
  let [lineBefore, lineAfter, testLine] = [
    triggerLine,
    triggerLine,
    triggerLine,
  ]
  let openTagArray: number[] = []
  let closeTagArray: number[] = []

  nsPrefix = getItemPrefix(items[i], nsPrefix)

  while (
    currentText.indexOf('<' + nsPrefix + items[i]) === -1 &&
    currentLine > -1
  ) {
    --currentLine

    if (currentLine > -1) {
      currentText = document.lineAt(currentLine).text
    }

    if (getItemsOnLineCount(currentText) > 1) {
      --currentLine
    }
  }

  if (currentText.indexOf('<' + nsPrefix + items[i]) > -1) {
    while (lineBefore > -1) {
      currentText = document.lineAt(lineBefore).text

      if (getItemsOnLineCount(currentText) < 2) {
        if (currentText.indexOf('<' + nsPrefix + items[i]) > -1) {
          openTagArray.push(lineBefore)

          //if multi line tag
          let testText = currentText
          if (!testText.includes('>')) {
            testLine = lineBefore
            while (!testText.includes('>')) {
              testText = document.lineAt(++testLine).text
              if (testText.indexOf('<' + nsPrefix + items[i]) > -1)
                openTagArray.push(testLine)
            }
          }

          //if selfclosing remove from the array
          if (
            testText.indexOf('/>') > -1 ||
            testText.includes('xml version') ||
            currentText.indexOf('</' + nsPrefix + items[i]) > -1
          ) {
            openTagArray.splice(openTagArray.length - 1, 1)
          }
        }

        if (currentText.indexOf('</' + nsPrefix + items[i]) > -1) {
          closeTagArray.push(lineBefore)
        }
      }

      --lineBefore
    }

    ++lineAfter

    while (lineAfter < document.lineCount) {
      currentText = document.lineAt(lineAfter).text

      if (getItemsOnLineCount(currentText) < 2) {
        if (currentText.indexOf('<' + nsPrefix + items[i]) > -1) {
          openTagArray.push(lineAfter)

          //if multi line tag
          while (!currentText.includes('>')) {
            currentText = document.lineAt(++lineAfter).text
          }

          //if selfclosing remove from the array
          if (currentText.indexOf('/>') > -1) {
            openTagArray.splice(openTagArray.length - 1, 1)
          }
        }

        if (currentText.indexOf('</' + nsPrefix + items[i]) > -1) {
          closeTagArray.push(lineAfter)
        }
      }

      ++lineAfter
    }

    if (openTagArray.length > closeTagArray.length) {
      return items[i]
    }
  }

  return 'none'
}