private static IScriptExtent GetExtentFromConstant(string value, IScriptExtent source) { string startLine = null; int newLineCount = 1; int positionInColumn = 1; int lastNewLineIndex = -1; for (int i = 0; i < value.Length; i++) { switch (value[i]) { case '\n': if (startLine == null) { startLine = value.Substring(0, i + 1); } lastNewLineIndex = i; newLineCount++; positionInColumn = 1; break; case '\r': break; default: positionInColumn++; break; } } if (startLine == null) { startLine = value; } IScriptPosition oldStart = source.StartScriptPosition; string fullScript = oldStart.GetFullScript(); string endLine = lastNewLineIndex > -1 ? value.Substring(lastNewLineIndex + 1, value.Length - lastNewLineIndex) : value; var start = new ScriptPosition( oldStart.File, 1, 1, startLine, fullScript); var end = new ScriptPosition( oldStart.File, newLineCount, positionInColumn, endLine, fullScript); return(new ScriptExtent(start, end)); }
public static IScriptPosition Position(IScriptPosition position = null) { return(PositionImpl(position?.File, position?.GetFullScript())); }