Encode HTML when entered in edit data cells (#1302)

* Encode HTML when entered in edit data cells

* Use VS Code's string encoding function
This commit is contained in:
Matt Irvine
2018-04-30 17:58:39 -07:00
committed by GitHub
parent a0456bf4f7
commit cd140b5527
3 changed files with 49 additions and 20 deletions

View File

@@ -88,19 +88,6 @@ export function parseNumAsTimeString(value: number): string {
return tempVal > 0 ? rs + '.' + mss : rs;
}
/**
* Converts <, >, &, ", ', and any characters that are outside \u00A0 to numeric HTML entity values
* like &#123;
* (Adapted from http://stackoverflow.com/a/18750001)
* @param str String to convert
* @return String with characters replaced.
*/
export function htmlEntities(str: string): string {
return typeof (str) === 'string'
? str.replace(/[\u00A0-\u9999<>\&"']/gim, (i) => { return `&#${i.charCodeAt(0)};`; })
: undefined;
}
export function generateUri(connection: IConnectionProfile, purpose?: 'dashboard' | 'insights' | 'connection'): string {
let prefix = purpose ? uriPrefixes[purpose] : uriPrefixes.default;
let uri = generateUriWithPrefix(connection, prefix);

View File

@@ -3,14 +3,14 @@
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as Utils from 'sql/parts/connection/common/utils';
import * as Strings from 'vs/base/common/strings';
export class DBCellValue {
displayValue: string;
isNull: boolean;
public static isDBCellValue(object: any): boolean {
return (object !== undefined && object.displayValue !== undefined && object.isNull !== undefined);
return (object !== undefined && object.displayValue !== undefined && object.isNull !== undefined);
}
}
@@ -25,7 +25,7 @@ export function hyperLinkFormatter(row: number, cell: any, value: any, columnDef
valueToDisplay = 'NULL';
if (!value.isNull) {
cellClasses += ' xmlLink';
valueToDisplay = Utils.htmlEntities(value.displayValue);
valueToDisplay = Strings.escape(value.displayValue);
return `<a class="${cellClasses}" href="#" >${valueToDisplay}</a>`;
} else {
cellClasses += ' missing-value';
@@ -44,13 +44,12 @@ export function textFormatter(row: number, cell: any, value: any, columnDef: any
if (DBCellValue.isDBCellValue(value)) {
valueToDisplay = 'NULL';
if (!value.isNull) {
valueToDisplay = Utils.htmlEntities(value.displayValue.replace(/(\r\n|\n|\r)/g, ' '));
valueToDisplay = Strings.escape(value.displayValue.replace(/(\r\n|\n|\r)/g, ' '));
} else {
cellClasses += ' missing-value';
}
} else if (typeof value === 'string'){
valueToDisplay = value;
} else if (typeof value === 'string') {
valueToDisplay = Strings.escape(value);
}
return `<span title="${valueToDisplay}" class="${cellClasses}">${valueToDisplay}</span>`;