public TreeTextRange GetInnerTreeTextRange()

in resharper/resharper-json/src/Json/Psi/Tree/Impl/JsonNewLiteralExpression.cs [28:61]


        public TreeTextRange GetInnerTreeTextRange()
        {
            var token = Literal;
            if (token == null) return TreeTextRange.InvalidRange;

            var tokenType = token.GetTokenType();
            if (tokenType == JsonNewTokenNodeTypes.NULL_KEYWORD) return TreeNodeExtensions.GetTreeTextRange(this);
            if (tokenType == JsonNewTokenNodeTypes.TRUE_KEYWORD) return TreeNodeExtensions.GetTreeTextRange(this);
            if (tokenType == JsonNewTokenNodeTypes.FALSE_KEYWORD) return TreeNodeExtensions.GetTreeTextRange(this);
            if (tokenType == JsonNewTokenNodeTypes.NUMERIC_LITERAL) return TreeNodeExtensions.GetTreeTextRange(this);
            if (tokenType == JsonNewTokenNodeTypes.DOUBLE_QUOTED_STRING)
            {
                var text = token.GetText();
                if (text.Length <= 1) return TreeTextRange.InvalidRange;

                var firstChar = text[0];
                var lastChar = text[^1];
                var treeTextRange = TreeNodeExtensions.GetTreeTextRange(this);

                var hasStartQuote = firstChar == '\"' || firstChar == '\'';
                var hasEndQuote = hasStartQuote ? firstChar == lastChar : lastChar == '\"' || lastChar == '\'';

                if (!treeTextRange.IsValid() || !hasStartQuote && !hasEndQuote) return treeTextRange;

                var length = treeTextRange.Length;
                if (length < 1) return treeTextRange;

                if (!hasStartQuote) return treeTextRange.TrimRight(1);
                if (length >= 2 && hasEndQuote) return treeTextRange.TrimLeft(1).TrimRight(1);
                return treeTextRange.TrimLeft(1);
            }

            return TreeTextRange.InvalidRange;
        }