removed option to not check strings

This commit is contained in:
ryan 2019-03-21 22:25:02 -07:00
parent 3f44445dd6
commit 8e6279cbca
2 changed files with 18 additions and 25 deletions

View File

@ -54,9 +54,6 @@ describe('toTableData', () => {
expect(guessColumnTypeFromValue(1)).toBe(ColumnType.number);
expect(guessColumnTypeFromValue(1.234)).toBe(ColumnType.number);
expect(guessColumnTypeFromValue(3.125e7)).toBe(ColumnType.number);
expect(guessColumnTypeFromValue('1')).toBe(ColumnType.string);
expect(guessColumnTypeFromValue('1.234')).toBe(ColumnType.string);
expect(guessColumnTypeFromValue('3.125e7')).toBe(ColumnType.string);
expect(guessColumnTypeFromValue(true)).toBe(ColumnType.boolean);
expect(guessColumnTypeFromValue(false)).toBe(ColumnType.boolean);
expect(guessColumnTypeFromValue(new Date())).toBe(ColumnType.time);
@ -64,19 +61,19 @@ describe('toTableData', () => {
});
it('Guess Colum Types from strings', () => {
expect(guessColumnTypeFromValue('1', true)).toBe(ColumnType.number);
expect(guessColumnTypeFromValue('1.234', true)).toBe(ColumnType.number);
expect(guessColumnTypeFromValue('3.125e7', true)).toBe(ColumnType.number);
expect(guessColumnTypeFromValue('True', true)).toBe(ColumnType.boolean);
expect(guessColumnTypeFromValue('FALSE', true)).toBe(ColumnType.boolean);
expect(guessColumnTypeFromValue('true', true)).toBe(ColumnType.boolean);
expect(guessColumnTypeFromValue('xxxx', true)).toBe(ColumnType.string);
expect(guessColumnTypeFromValue('1')).toBe(ColumnType.number);
expect(guessColumnTypeFromValue('1.234')).toBe(ColumnType.number);
expect(guessColumnTypeFromValue('3.125e7')).toBe(ColumnType.number);
expect(guessColumnTypeFromValue('True')).toBe(ColumnType.boolean);
expect(guessColumnTypeFromValue('FALSE')).toBe(ColumnType.boolean);
expect(guessColumnTypeFromValue('true')).toBe(ColumnType.boolean);
expect(guessColumnTypeFromValue('xxxx')).toBe(ColumnType.string);
});
it('Guess Colum Types from table', () => {
const table = {
columns: [{ text: 'A (number)' }, { text: 'B (strings)' }, { text: 'C (nulls)' }, { text: 'Time' }],
rows: [[123, null, null, '2000'], [null, '123', null, 'XXX']],
rows: [[123, null, null, '2000'], [null, 'Hello', null, 'XXX']],
};
const norm = guessColumnTypes(table);
expect(norm.columns[0].type).toBe(ColumnType.number);

View File

@ -170,24 +170,20 @@ const NUMBER = /^\s*-?(\d*\.?\d+|\d+\.?\d*)(e[-+]?\d+)?\s*$/i;
*
* TODO: better Date/Time support! Look for standard date strings?
*/
export function guessColumnTypeFromValue(v: any, parseString?: boolean): ColumnType {
export function guessColumnTypeFromValue(v: any): ColumnType {
if (isNumber(v)) {
return ColumnType.number;
}
if (isString(v)) {
if (parseString) {
const c0 = v[0].toLowerCase();
if (c0 === 't' || c0 === 'f') {
if (v === 'true' || v === 'TRUE' || v === 'True' || v === 'false' || v === 'FALSE' || v === 'False') {
return ColumnType.boolean;
}
}
if (NUMBER.test(v)) {
return ColumnType.number;
}
if (NUMBER.test(v)) {
return ColumnType.number;
}
if (v === 'true' || v === 'TRUE' || v === 'True' || v === 'false' || v === 'FALSE' || v === 'False') {
return ColumnType.boolean;
}
return ColumnType.string;
}
@ -205,7 +201,7 @@ export function guessColumnTypeFromValue(v: any, parseString?: boolean): ColumnT
/**
* Looks at the data to guess the column type. This ignores any existing setting
*/
function guessColumnTypeFromTable(table: TableData, index: number, parseString?: boolean): ColumnType | undefined {
function guessColumnTypeFromTable(table: TableData, index: number): ColumnType | undefined {
const column = table.columns[index];
// 1. Use the column name to guess
@ -220,7 +216,7 @@ function guessColumnTypeFromTable(table: TableData, index: number, parseString?:
for (let i = 0; i < table.rows.length; i++) {
const v = table.rows[i][index];
if (v !== null) {
return guessColumnTypeFromValue(v, parseString);
return guessColumnTypeFromValue(v);
}
}