function getForwardOffsetData()

in src/yaml/yamlUtils.ts [389:434]


function getForwardOffsetData(text: string, offset: number, initialNumberOfSpaces: number) {
    let isWithinCatchRetryState = false;
    let hasCatchPropSibling = false;
    let hasRetryPropSibling = false;
    let beginLineOffset = offset;

    // Iterate the text forwards from the offset
    for (let i = offset; i <= text.length; i++) {
        if (text[i] === '\n') {
            const lineText = text.slice(beginLineOffset + 1, i)
            const trimmedLine = lineText.trim()
            const numberOfPrecedingSpaces = getNumberOfLeftSpaces(lineText)
            beginLineOffset = i

            // Ignore empty lines
            if (trimmedLine.length === 0) {
                continue
            }

            // If number of spaces lower than that of the cursor
            // it is a parent property or a sibling of parent property
            if (numberOfPrecedingSpaces < initialNumberOfSpaces) {
                break
            // If number of spaces is higher than that of the cursor it means it is a child
            // of the property or of its siblings
            } else if (numberOfPrecedingSpaces > initialNumberOfSpaces) {
                continue
            }

            hasCatchPropSibling = trimmedLine.startsWith(CATCH_PROP_STRING) || hasCatchPropSibling
            hasRetryPropSibling = trimmedLine.startsWith(RETRY_PROP_STRING) || hasRetryPropSibling

            const isCatchRetryState = CATCH_RETRY_STATE_REGEX.test(trimmedLine)

            if (isCatchRetryState) {
                isWithinCatchRetryState = true
            }
        }
    }

    return {
        isWithinCatchRetryState,
        hasCatchPropSibling,
        hasRetryPropSibling
    }
}