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;
}