Skip to content

Commit d0875ec

Browse files
committed
Fix useNativeTypes handling.
- Fix previous useNativeTypes change. - Refactor to make code easier to follow. - Performance change not tested. - Handle another case for integeres similar to that from fromRdf#t0027. - Additions proposed for API test suite.
1 parent 9d97233 commit d0875ec

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

lib/fromRdf.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -354,25 +354,25 @@ function _RDFToObject(o, useNativeTypes, rdfDirection, options) {
354354
rval['@value'] = true;
355355
} else if(rval['@value'] === 'false' || rval['@value'] === '0') {
356356
rval['@value'] = false;
357-
} else if(rval['@value'] === 'True' || rval['@value'] === 'False') {
357+
} else {
358358
rval['@type'] = type;
359359
}
360-
} else if(types.isNumeric(rval['@value'])) {
361-
if(type === XSD_INTEGER) {
360+
} else if(type === XSD_INTEGER) {
361+
if(types.isNumeric(rval['@value'])) {
362362
const i = parseInt(rval['@value'], 10);
363363
if(i.toFixed(0) === rval['@value']) {
364364
rval['@value'] = i;
365365
}
366-
} else if(type === XSD_DOUBLE) {
367-
rval['@value'] = parseFloat(rval['@value']);
366+
} else {
367+
rval['@type'] = type;
368368
}
369369
} else if(type === XSD_DOUBLE) {
370-
// if not numeric and double, include type
371-
// occurs for valid strings such as "+INF", "-INF", and large values
372-
rval['@type'] = type;
373-
}
374-
// do not add native type
375-
if(![XSD_BOOLEAN, XSD_INTEGER, XSD_DOUBLE, XSD_STRING].includes(type)) {
370+
if(types.isNumeric(rval['@value'])) {
371+
rval['@value'] = parseFloat(rval['@value']);
372+
} else {
373+
rval['@type'] = type;
374+
}
375+
} else {
376376
rval['@type'] = type;
377377
}
378378
} else if(rdfDirection === 'i18n-datatype' &&

0 commit comments

Comments
 (0)