Comparing version 1.6.4 to 1.7.0
@@ -83,3 +83,3 @@ "use strict"; | ||
this._sparqlKeyword = /^(?:PREFIX|BASE|GRAPH)(?=[\s#<])/i; | ||
this._shortPredicates = /^a(?=[\s()\[\]\{\}"'<>])/; | ||
this._shortPredicates = /^a(?=[\s#()\[\]\{\}"'<>])/; | ||
this._newline = /^[ \t]*(?:#[^\n\r]*)?(?:\r\n|\n|\r)[ \t]*/; | ||
@@ -86,0 +86,0 @@ this._comment = /#([^\n\r]*)/; |
@@ -81,2 +81,3 @@ "use strict"; | ||
if (!/triple|quad/i.test(options.format)) { | ||
this._lineMode = false; | ||
this._graph = DEFAULTGRAPH; | ||
@@ -86,2 +87,3 @@ this._prefixIRIs = Object.create(null); | ||
} else { | ||
this._lineMode = true; | ||
this._writeQuad = this._writeQuadLine; | ||
@@ -173,5 +175,35 @@ } | ||
let value = literal.value; | ||
if (escape.test(value)) value = value.replace(escapeAll, characterReplacer); // Write the literal, possibly with type or language | ||
if (escape.test(value)) value = value.replace(escapeAll, characterReplacer); // Write a language-tagged literal | ||
if (literal.language) return `"${value}"@${literal.language}`;else if (literal.datatype.value !== xsd.string) return `"${value}"^^${this._encodeIriOrBlank(literal.datatype)}`;else return `"${value}"`; | ||
if (literal.language) return `"${value}"@${literal.language}`; // Write dedicated literals per data type | ||
if (this._lineMode) { | ||
// Only abbreviate strings in N-Triples or N-Quads | ||
if (literal.datatype.value === xsd.string) return `"${value}"`; | ||
} else { | ||
// Use common datatype abbreviations in Turtle or TriG | ||
switch (literal.datatype.value) { | ||
case xsd.string: | ||
return `"${value}"`; | ||
case xsd.boolean: | ||
if (value === 'true' || value === 'false') return value; | ||
break; | ||
case xsd.integer: | ||
if (/^[+-]?\d+$/.test(value)) return value; | ||
break; | ||
case xsd.decimal: | ||
if (/^[+-]?\d*\.\d+$/.test(value)) return value; | ||
break; | ||
case xsd.double: | ||
if (/^[+-]?(?:\d+\.\d*|\.?\d+)[eE][+-]?\d+$/.test(value)) return value; | ||
break; | ||
} | ||
} // Write a regular datatyped literal | ||
return `"${value}"^^${this._encodeIriOrBlank(literal.datatype)}`; | ||
} // ### `_encodePredicate` represents a predicate | ||
@@ -178,0 +210,0 @@ |
{ | ||
"name": "n3", | ||
"version": "1.6.4", | ||
"version": "1.7.0", | ||
"description": "Lightning fast, asynchronous, streaming Turtle / N3 / RDF library.", | ||
@@ -5,0 +5,0 @@ "author": "Ruben Verborgh <ruben.verborgh@gmail.com>", |
# Lightning fast, asynchronous, streaming RDF for JavaScript | ||
[](https://api.travis-ci.com/rdfjs/N3.js.svg?branch=master) | ||
[](https://github.com/rdfjs/N3.js/actions) | ||
[](https://coveralls.io/github/rdfjs/N3.js) | ||
@@ -4,0 +4,0 @@ [](https://www.npmjs.com/package/n3) |
@@ -49,3 +49,3 @@ // **N3Lexer** tokenizes N3 documents. | ||
this._sparqlKeyword = /^(?:PREFIX|BASE|GRAPH)(?=[\s#<])/i; | ||
this._shortPredicates = /^a(?=[\s()\[\]\{\}"'<>])/; | ||
this._shortPredicates = /^a(?=[\s#()\[\]\{\}"'<>])/; | ||
this._newline = /^[ \t]*(?:#[^\n\r]*)?(?:\r\n|\n|\r)[ \t]*/; | ||
@@ -52,0 +52,0 @@ this._comment = /#([^\n\r]*)/; |
@@ -56,2 +56,3 @@ // **N3Writer** writes N3 documents. | ||
if (!(/triple|quad/i).test(options.format)) { | ||
this._lineMode = false; | ||
this._graph = DEFAULTGRAPH; | ||
@@ -62,2 +63,3 @@ this._prefixIRIs = Object.create(null); | ||
else { | ||
this._lineMode = true; | ||
this._writeQuad = this._writeQuadLine; | ||
@@ -164,9 +166,39 @@ } | ||
value = value.replace(escapeAll, characterReplacer); | ||
// Write the literal, possibly with type or language | ||
// Write a language-tagged literal | ||
if (literal.language) | ||
return `"${value}"@${literal.language}`; | ||
else if (literal.datatype.value !== xsd.string) | ||
return `"${value}"^^${this._encodeIriOrBlank(literal.datatype)}`; | ||
else | ||
return `"${value}"`; | ||
// Write dedicated literals per data type | ||
if (this._lineMode) { | ||
// Only abbreviate strings in N-Triples or N-Quads | ||
if (literal.datatype.value === xsd.string) | ||
return `"${value}"`; | ||
} | ||
else { | ||
// Use common datatype abbreviations in Turtle or TriG | ||
switch (literal.datatype.value) { | ||
case xsd.string: | ||
return `"${value}"`; | ||
case xsd.boolean: | ||
if (value === 'true' || value === 'false') | ||
return value; | ||
break; | ||
case xsd.integer: | ||
if (/^[+-]?\d+$/.test(value)) | ||
return value; | ||
break; | ||
case xsd.decimal: | ||
if (/^[+-]?\d*\.\d+$/.test(value)) | ||
return value; | ||
break; | ||
case xsd.double: | ||
if (/^[+-]?(?:\d+\.\d*|\.?\d+)[eE][+-]?\d+$/.test(value)) | ||
return value; | ||
break; | ||
} | ||
} | ||
// Write a regular datatyped literal | ||
return `"${value}"^^${this._encodeIriOrBlank(literal.datatype)}`; | ||
} | ||
@@ -173,0 +205,0 @@ |
264549
5650