n3 2.11.7 → 2.11.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/n3.esm.min.js +3 -3
- package/browser/n3.min.js +3 -3
- package/lib/N3Writer.js +16 -10
- package/package.json +1 -1
- package/src/N3Writer.js +16 -10
package/browser/n3.esm.min.js
CHANGED
|
@@ -9,12 +9,12 @@ var Ul=Object.create;var ar=Object.defineProperty,ql=Object.defineProperties,Wl=
|
|
|
9
9
|
${this._encodePredicate(this._predicate=r)} ${this._encodeObject(i)}`,s):this._write(`${(this._subject===null?"":`.
|
|
10
10
|
`)+this._encodeSubject(this._subject=e)} ${this._encodePredicate(this._predicate=r)} ${this._encodeObject(i)}`,s)}catch(o){s&&s(o)}}_writeQuadLine(e,r,i,n,s){delete this._prefixMatch,this._write(this.quadToString(e,r,i,n),s)}quadToString(e,r,i,n){return`${this._encodeSubject(e)} ${r.termType==="Literal"?this._encodeLiteral(r):this._encodeIriOrBlank(r)} ${this._encodeObject(i)}${n&&!se(n)?` ${this._encodeIriOrBlank(n)} .
|
|
11
11
|
`:` .
|
|
12
|
-
`}`}quadsToString(e){let r="";for(let i of e)r+=this.quadToString(i.subject,i.predicate,i.object,i.graph);return r}_encodeSubject(e){switch(e.termType){case"Quad":return this._encodeQuad(e);case"Literal":return this._encodeLiteral(e);default:return this._encodeIriOrBlank(e)}}_encodeIriOrBlank(e){if(e.termType!=="NamedNode")return this._lists&&e.value in this._lists&&(e=this.list(this._lists[e.value])),e instanceof V?e.id:e.termType==="Variable"?`?${e.value}`:`_:${e.value}`;let r=e.value;this._baseIri&&(r=this._baseIri.toRelative(r)),this._escape.test(r)&&(r=r.replace(this._escapeAll,this._characterReplacer));let i=this._hasPrefixes?this._prefixRegex.exec(r):null;return i?i[1]?this._prefixIRIs[i[1]]+i[2]:r:`<${r}>`}_encodeLiteral(e){let r=e.value;this._escape.test(r)&&(r=r.replace(this._escapeAll,this._characterReplacer));let i=e.language;if(i){let n=e.direction,s=n?`--${n}`:"";return`"${r}"@${i}${s}`}if(this._lineMode){if(e.datatype.value===dt.string)return`"${r}"`}else switch(e.datatype.value){case dt.string:return`"${r}"`;case dt.boolean:if(r==="true"||r==="false")return r;break;case dt.integer:if(/^[+-]?\d+$/.test(r))return r;break;case dt.decimal:if(/^[+-]?\d*\.\d+$/.test(r))return r;break;case dt.double:if(/^[+-]?(?:\d+\.\d*|\.?\d+)[eE][+-]?\d+$/.test(r))return r;break}return`"${r}"^^${this._encodeIriOrBlank(e.datatype)}`}_encodePredicate(e){switch(e.termType){case"NamedNode":return e.value===gu.type?"a":this._encodeIriOrBlank(e);case"Literal":return this._encodeLiteral(e);default:return this._encodeIriOrBlank(e)}}_encodeObject(e){switch(e.termType){case"Quad":return this._encodeQuad(e);case"Literal":return this._encodeLiteral(e);default:return this._encodeIriOrBlank(e)}}_encodeQuad({subject:e,predicate:r,object:i,graph:n}){let s=this._lineMode?" ":"";return`<<(${s}${this._encodeSubject(e)} ${this._encodePredicate(r)} ${this._encodeObject(i)}${se(n)?"":` ${this._encodeIriOrBlank(n)}`}${s})>>`}_blockedWrite(){throw new Error("Cannot write because the writer has been closed.")}addQuad(e,r,i,n,s){i===void 0?this._writeQuad(e.subject,e.predicate,e.object,e.graph,r):typeof n=="function"?this._writeQuad(e,r,i,Ut,n):this._writeQuad(e,r,i,n||Ut,s)}addQuads(e){for(let r=0;r<e.length;r++)this.addQuad(e[r])}addPrefix(e,r,i){let n={};n[e]=r,this.addPrefixes(n,i)}addPrefixes(e,r){if(!this._prefixIRIs)return r&&r();let i=!1;for(let n in e){let s=e[n];typeof s!="string"&&(s=s.value),i=!0,this._subject!==null&&(this._write(this._inDefaultGraph?`.
|
|
12
|
+
`}`}quadsToString(e){let r="";for(let i of e)r+=this.quadToString(i.subject,i.predicate,i.object,i.graph);return r}_encodeSubject(e){switch(e.termType){case"Quad":return this._encodeQuad(e);case"Literal":return this._encodeLiteral(e);default:return this._encodeIriOrBlank(e)}}_encodeIriOrBlank(e){if(e.termType!=="NamedNode")return this._lists&&e.value in this._lists&&(e=this.list(this._lists[e.value])),e instanceof V?e.id:e.termType==="Variable"?`?${e.value}`:`_:${e.value}`;let r=e.value;this._baseIri&&(r=this._baseIri.toRelative(r)),this._escape.test(r)&&(r=r.replace(this._escapeAll,this._characterReplacer));let i=this._hasPrefixes?(this._prefixRegex||this._createPrefixRegex()).exec(r):null;return i?i[1]?this._prefixIRIs[i[1]]+i[2]:r:`<${r}>`}_encodeLiteral(e){let r=e.value;this._escape.test(r)&&(r=r.replace(this._escapeAll,this._characterReplacer));let i=e.language;if(i){let n=e.direction,s=n?`--${n}`:"";return`"${r}"@${i}${s}`}if(this._lineMode){if(e.datatype.value===dt.string)return`"${r}"`}else switch(e.datatype.value){case dt.string:return`"${r}"`;case dt.boolean:if(r==="true"||r==="false")return r;break;case dt.integer:if(/^[+-]?\d+$/.test(r))return r;break;case dt.decimal:if(/^[+-]?\d*\.\d+$/.test(r))return r;break;case dt.double:if(/^[+-]?(?:\d+\.\d*|\.?\d+)[eE][+-]?\d+$/.test(r))return r;break}return`"${r}"^^${this._encodeIriOrBlank(e.datatype)}`}_encodePredicate(e){switch(e.termType){case"NamedNode":return e.value===gu.type?"a":this._encodeIriOrBlank(e);case"Literal":return this._encodeLiteral(e);default:return this._encodeIriOrBlank(e)}}_encodeObject(e){switch(e.termType){case"Quad":return this._encodeQuad(e);case"Literal":return this._encodeLiteral(e);default:return this._encodeIriOrBlank(e)}}_encodeQuad({subject:e,predicate:r,object:i,graph:n}){let s=this._lineMode?" ":"";return`<<(${s}${this._encodeSubject(e)} ${this._encodePredicate(r)} ${this._encodeObject(i)}${se(n)?"":` ${this._encodeIriOrBlank(n)}`}${s})>>`}_blockedWrite(){throw new Error("Cannot write because the writer has been closed.")}addQuad(e,r,i,n,s){i===void 0?this._writeQuad(e.subject,e.predicate,e.object,e.graph,r):typeof n=="function"?this._writeQuad(e,r,i,Ut,n):this._writeQuad(e,r,i,n||Ut,s)}addQuads(e){for(let r=0;r<e.length;r++)this.addQuad(e[r])}addPrefix(e,r,i){let n={};n[e]=r,this.addPrefixes(n,i)}addPrefixes(e,r){if(!this._prefixIRIs)return r&&r();let i=!1;for(let n in e){let s=e[n];typeof s!="string"&&(s=s.value),i=!0,this._subject!==null&&(this._write(this._inDefaultGraph?`.
|
|
13
13
|
`:`
|
|
14
14
|
}
|
|
15
15
|
`),this._subject=null,this._graph=""),this._prefixIRIs[s]=n+=":",this._prefixPatterns[s]=[Qe(s),Qe(n)],this._write(`@prefix ${n} <${s}>.
|
|
16
|
-
`)}
|
|
17
|
-
`:"",r)}blank(e,r){let i=e,n,s;switch(e===void 0?i=[]:e.termType?i=[{predicate:e,object:r}]:"length"in e||(i=[e]),s=i.length){case 0:return new Ve("[]");case 1:if(n=i[0],!(n.object instanceof Ve))return new Ve(`[ ${this._encodePredicate(n.predicate)} ${this._encodeObject(n.object)} ]`);default:let o="[";for(let a=0;a<s;a++)n=i[a],n.predicate.equals(e)?o+=`, ${this._encodeObject(n.object)}`:(o+=`${(a?`;
|
|
16
|
+
`)}i&&(this._hasPrefixes=!0,this._prefixRegex=null),this._write(i?`
|
|
17
|
+
`:"",r)}_createPrefixRegex(){let e="",r="";for(let i in this._prefixPatterns){let[n,s]=this._prefixPatterns[i];e+=e?`|${n}`:n,r+=r?`|${s}`:s}return this._prefixRegex=new RegExp(`^(?:${r})[^/]*$|^(${e})([_a-zA-Z0-9](?:\\.?[\\-_a-zA-Z0-9])*)$`)}blank(e,r){let i=e,n,s;switch(e===void 0?i=[]:e.termType?i=[{predicate:e,object:r}]:"length"in e||(i=[e]),s=i.length){case 0:return new Ve("[]");case 1:if(n=i[0],!(n.object instanceof Ve))return new Ve(`[ ${this._encodePredicate(n.predicate)} ${this._encodeObject(n.object)} ]`);default:let o="[";for(let a=0;a<s;a++)n=i[a],n.predicate.equals(e)?o+=`, ${this._encodeObject(n.object)}`:(o+=`${(a?`;
|
|
18
18
|
`:`
|
|
19
19
|
`)+this._encodePredicate(n.predicate)} ${this._encodeObject(n.object)}`,e=n.predicate);return new Ve(`${o}
|
|
20
20
|
]`)}}list(e){let r=e&&e.length||0,i=new Array(r);for(let n=0;n<r;n++)i[n]=this._encodeObject(e[n]);return new Ve(`(${i.join(" ")})`)}end(e){this._subject!==null&&(this._write(this._inDefaultGraph?`.
|
package/browser/n3.min.js
CHANGED
|
@@ -9,12 +9,12 @@ var N3=(()=>{var Wl=Object.create;var qt=Object.defineProperty,Gl=Object.defineP
|
|
|
9
9
|
${this._encodePredicate(this._predicate=r)} ${this._encodeObject(i)}`,s):this._write(`${(this._subject===null?"":`.
|
|
10
10
|
`)+this._encodeSubject(this._subject=e)} ${this._encodePredicate(this._predicate=r)} ${this._encodeObject(i)}`,s)}catch(o){s&&s(o)}}_writeQuadLine(e,r,i,n,s){delete this._prefixMatch,this._write(this.quadToString(e,r,i,n),s)}quadToString(e,r,i,n){return`${this._encodeSubject(e)} ${r.termType==="Literal"?this._encodeLiteral(r):this._encodeIriOrBlank(r)} ${this._encodeObject(i)}${n&&!se(n)?` ${this._encodeIriOrBlank(n)} .
|
|
11
11
|
`:` .
|
|
12
|
-
`}`}quadsToString(e){let r="";for(let i of e)r+=this.quadToString(i.subject,i.predicate,i.object,i.graph);return r}_encodeSubject(e){switch(e.termType){case"Quad":return this._encodeQuad(e);case"Literal":return this._encodeLiteral(e);default:return this._encodeIriOrBlank(e)}}_encodeIriOrBlank(e){if(e.termType!=="NamedNode")return this._lists&&e.value in this._lists&&(e=this.list(this._lists[e.value])),e instanceof Q?e.id:e.termType==="Variable"?`?${e.value}`:`_:${e.value}`;let r=e.value;this._baseIri&&(r=this._baseIri.toRelative(r)),this._escape.test(r)&&(r=r.replace(this._escapeAll,this._characterReplacer));let i=this._hasPrefixes?this._prefixRegex.exec(r):null;return i?i[1]?this._prefixIRIs[i[1]]+i[2]:r:`<${r}>`}_encodeLiteral(e){let r=e.value;this._escape.test(r)&&(r=r.replace(this._escapeAll,this._characterReplacer));let i=e.language;if(i){let n=e.direction,s=n?`--${n}`:"";return`"${r}"@${i}${s}`}if(this._lineMode){if(e.datatype.value===pt.string)return`"${r}"`}else switch(e.datatype.value){case pt.string:return`"${r}"`;case pt.boolean:if(r==="true"||r==="false")return r;break;case pt.integer:if(/^[+-]?\d+$/.test(r))return r;break;case pt.decimal:if(/^[+-]?\d*\.\d+$/.test(r))return r;break;case pt.double:if(/^[+-]?(?:\d+\.\d*|\.?\d+)[eE][+-]?\d+$/.test(r))return r;break}return`"${r}"^^${this._encodeIriOrBlank(e.datatype)}`}_encodePredicate(e){switch(e.termType){case"NamedNode":return e.value===mu.type?"a":this._encodeIriOrBlank(e);case"Literal":return this._encodeLiteral(e);default:return this._encodeIriOrBlank(e)}}_encodeObject(e){switch(e.termType){case"Quad":return this._encodeQuad(e);case"Literal":return this._encodeLiteral(e);default:return this._encodeIriOrBlank(e)}}_encodeQuad({subject:e,predicate:r,object:i,graph:n}){let s=this._lineMode?" ":"";return`<<(${s}${this._encodeSubject(e)} ${this._encodePredicate(r)} ${this._encodeObject(i)}${se(n)?"":` ${this._encodeIriOrBlank(n)}`}${s})>>`}_blockedWrite(){throw new Error("Cannot write because the writer has been closed.")}addQuad(e,r,i,n,s){i===void 0?this._writeQuad(e.subject,e.predicate,e.object,e.graph,r):typeof n=="function"?this._writeQuad(e,r,i,Vt,n):this._writeQuad(e,r,i,n||Vt,s)}addQuads(e){for(let r=0;r<e.length;r++)this.addQuad(e[r])}addPrefix(e,r,i){let n={};n[e]=r,this.addPrefixes(n,i)}addPrefixes(e,r){if(!this._prefixIRIs)return r&&r();let i=!1;for(let n in e){let s=e[n];typeof s!="string"&&(s=s.value),i=!0,this._subject!==null&&(this._write(this._inDefaultGraph?`.
|
|
12
|
+
`}`}quadsToString(e){let r="";for(let i of e)r+=this.quadToString(i.subject,i.predicate,i.object,i.graph);return r}_encodeSubject(e){switch(e.termType){case"Quad":return this._encodeQuad(e);case"Literal":return this._encodeLiteral(e);default:return this._encodeIriOrBlank(e)}}_encodeIriOrBlank(e){if(e.termType!=="NamedNode")return this._lists&&e.value in this._lists&&(e=this.list(this._lists[e.value])),e instanceof Q?e.id:e.termType==="Variable"?`?${e.value}`:`_:${e.value}`;let r=e.value;this._baseIri&&(r=this._baseIri.toRelative(r)),this._escape.test(r)&&(r=r.replace(this._escapeAll,this._characterReplacer));let i=this._hasPrefixes?(this._prefixRegex||this._createPrefixRegex()).exec(r):null;return i?i[1]?this._prefixIRIs[i[1]]+i[2]:r:`<${r}>`}_encodeLiteral(e){let r=e.value;this._escape.test(r)&&(r=r.replace(this._escapeAll,this._characterReplacer));let i=e.language;if(i){let n=e.direction,s=n?`--${n}`:"";return`"${r}"@${i}${s}`}if(this._lineMode){if(e.datatype.value===pt.string)return`"${r}"`}else switch(e.datatype.value){case pt.string:return`"${r}"`;case pt.boolean:if(r==="true"||r==="false")return r;break;case pt.integer:if(/^[+-]?\d+$/.test(r))return r;break;case pt.decimal:if(/^[+-]?\d*\.\d+$/.test(r))return r;break;case pt.double:if(/^[+-]?(?:\d+\.\d*|\.?\d+)[eE][+-]?\d+$/.test(r))return r;break}return`"${r}"^^${this._encodeIriOrBlank(e.datatype)}`}_encodePredicate(e){switch(e.termType){case"NamedNode":return e.value===mu.type?"a":this._encodeIriOrBlank(e);case"Literal":return this._encodeLiteral(e);default:return this._encodeIriOrBlank(e)}}_encodeObject(e){switch(e.termType){case"Quad":return this._encodeQuad(e);case"Literal":return this._encodeLiteral(e);default:return this._encodeIriOrBlank(e)}}_encodeQuad({subject:e,predicate:r,object:i,graph:n}){let s=this._lineMode?" ":"";return`<<(${s}${this._encodeSubject(e)} ${this._encodePredicate(r)} ${this._encodeObject(i)}${se(n)?"":` ${this._encodeIriOrBlank(n)}`}${s})>>`}_blockedWrite(){throw new Error("Cannot write because the writer has been closed.")}addQuad(e,r,i,n,s){i===void 0?this._writeQuad(e.subject,e.predicate,e.object,e.graph,r):typeof n=="function"?this._writeQuad(e,r,i,Vt,n):this._writeQuad(e,r,i,n||Vt,s)}addQuads(e){for(let r=0;r<e.length;r++)this.addQuad(e[r])}addPrefix(e,r,i){let n={};n[e]=r,this.addPrefixes(n,i)}addPrefixes(e,r){if(!this._prefixIRIs)return r&&r();let i=!1;for(let n in e){let s=e[n];typeof s!="string"&&(s=s.value),i=!0,this._subject!==null&&(this._write(this._inDefaultGraph?`.
|
|
13
13
|
`:`
|
|
14
14
|
}
|
|
15
15
|
`),this._subject=null,this._graph=""),this._prefixIRIs[s]=n+=":",this._prefixPatterns[s]=[Ve(s),Ve(n)],this._write(`@prefix ${n} <${s}>.
|
|
16
|
-
`)}
|
|
17
|
-
`:"",r)}blank(e,r){let i=e,n,s;switch(e===void 0?i=[]:e.termType?i=[{predicate:e,object:r}]:"length"in e||(i=[e]),s=i.length){case 0:return new He("[]");case 1:if(n=i[0],!(n.object instanceof He))return new He(`[ ${this._encodePredicate(n.predicate)} ${this._encodeObject(n.object)} ]`);default:let o="[";for(let a=0;a<s;a++)n=i[a],n.predicate.equals(e)?o+=`, ${this._encodeObject(n.object)}`:(o+=`${(a?`;
|
|
16
|
+
`)}i&&(this._hasPrefixes=!0,this._prefixRegex=null),this._write(i?`
|
|
17
|
+
`:"",r)}_createPrefixRegex(){let e="",r="";for(let i in this._prefixPatterns){let[n,s]=this._prefixPatterns[i];e+=e?`|${n}`:n,r+=r?`|${s}`:s}return this._prefixRegex=new RegExp(`^(?:${r})[^/]*$|^(${e})([_a-zA-Z0-9](?:\\.?[\\-_a-zA-Z0-9])*)$`)}blank(e,r){let i=e,n,s;switch(e===void 0?i=[]:e.termType?i=[{predicate:e,object:r}]:"length"in e||(i=[e]),s=i.length){case 0:return new He("[]");case 1:if(n=i[0],!(n.object instanceof He))return new He(`[ ${this._encodePredicate(n.predicate)} ${this._encodeObject(n.object)} ]`);default:let o="[";for(let a=0;a<s;a++)n=i[a],n.predicate.equals(e)?o+=`, ${this._encodeObject(n.object)}`:(o+=`${(a?`;
|
|
18
18
|
`:`
|
|
19
19
|
`)+this._encodePredicate(n.predicate)} ${this._encodeObject(n.object)}`,e=n.predicate);return new He(`${o}
|
|
20
20
|
]`)}}list(e){let r=e&&e.length||0,i=new Array(r);for(let n=0;n<r;n++)i[n]=this._encodeObject(e[n]);return new He(`(${i.join(" ")})`)}end(e){this._subject!==null&&(this._write(this._inDefaultGraph?`.
|
package/lib/N3Writer.js
CHANGED
|
@@ -188,7 +188,7 @@ class N3Writer {
|
|
|
188
188
|
// Escape special characters
|
|
189
189
|
if (this._escape.test(iri)) iri = iri.replace(this._escapeAll, this._characterReplacer);
|
|
190
190
|
// Try to represent the IRI as prefixed name, unless no prefixes were added
|
|
191
|
-
const prefixMatch = this._hasPrefixes ? this._prefixRegex.exec(iri) : null;
|
|
191
|
+
const prefixMatch = this._hasPrefixes ? (this._prefixRegex || this._createPrefixRegex()).exec(iri) : null;
|
|
192
192
|
return !prefixMatch ? `<${iri}>` : !prefixMatch[1] ? iri : this._prefixIRIs[prefixMatch[1]] + prefixMatch[2];
|
|
193
193
|
}
|
|
194
194
|
|
|
@@ -319,22 +319,28 @@ class N3Writer {
|
|
|
319
319
|
this._prefixPatterns[iri] = [(0, _Util.escapeRegex)(iri), (0, _Util.escapeRegex)(prefix)];
|
|
320
320
|
this._write(`@prefix ${prefix} <${iri}>.\n`);
|
|
321
321
|
}
|
|
322
|
-
// Recreate the prefix matcher
|
|
322
|
+
// Recreate the prefix matcher when it is next needed, so that adding
|
|
323
|
+
// prefixes one by one does not rebuild it for every prefix
|
|
323
324
|
if (hasPrefixes) {
|
|
324
325
|
this._hasPrefixes = true;
|
|
325
|
-
|
|
326
|
-
prefixList = '';
|
|
327
|
-
for (const prefixIRI in this._prefixPatterns) {
|
|
328
|
-
const [IRIpattern, prefixPattern] = this._prefixPatterns[prefixIRI];
|
|
329
|
-
IRIlist += IRIlist ? `|${IRIpattern}` : IRIpattern;
|
|
330
|
-
prefixList += prefixList ? `|${prefixPattern}` : prefixPattern;
|
|
331
|
-
}
|
|
332
|
-
this._prefixRegex = new RegExp(`^(?:${prefixList})[^/]*$|` + `^(${IRIlist})([_a-zA-Z0-9](?:\\.?[\\-_a-zA-Z0-9])*)$`);
|
|
326
|
+
this._prefixRegex = null;
|
|
333
327
|
}
|
|
334
328
|
// End a prefix block with a newline
|
|
335
329
|
this._write(hasPrefixes ? '\n' : '', done);
|
|
336
330
|
}
|
|
337
331
|
|
|
332
|
+
// ### `_createPrefixRegex` creates the matcher for the current prefixes
|
|
333
|
+
_createPrefixRegex() {
|
|
334
|
+
let IRIlist = '',
|
|
335
|
+
prefixList = '';
|
|
336
|
+
for (const prefixIRI in this._prefixPatterns) {
|
|
337
|
+
const [IRIpattern, prefixPattern] = this._prefixPatterns[prefixIRI];
|
|
338
|
+
IRIlist += IRIlist ? `|${IRIpattern}` : IRIpattern;
|
|
339
|
+
prefixList += prefixList ? `|${prefixPattern}` : prefixPattern;
|
|
340
|
+
}
|
|
341
|
+
return this._prefixRegex = new RegExp(`^(?:${prefixList})[^/]*$|` + `^(${IRIlist})([_a-zA-Z0-9](?:\\.?[\\-_a-zA-Z0-9])*)$`);
|
|
342
|
+
}
|
|
343
|
+
|
|
338
344
|
// ### `blank` creates a blank node with the given content
|
|
339
345
|
blank(predicate, object) {
|
|
340
346
|
let children = predicate,
|
package/package.json
CHANGED
package/src/N3Writer.js
CHANGED
|
@@ -189,7 +189,7 @@ export default class N3Writer {
|
|
|
189
189
|
if (this._escape.test(iri))
|
|
190
190
|
iri = iri.replace(this._escapeAll, this._characterReplacer);
|
|
191
191
|
// Try to represent the IRI as prefixed name, unless no prefixes were added
|
|
192
|
-
const prefixMatch = this._hasPrefixes ? this._prefixRegex.exec(iri) : null;
|
|
192
|
+
const prefixMatch = this._hasPrefixes ? (this._prefixRegex || this._createPrefixRegex()).exec(iri) : null;
|
|
193
193
|
return !prefixMatch ? `<${iri}>` :
|
|
194
194
|
(!prefixMatch[1] ? iri : this._prefixIRIs[prefixMatch[1]] + prefixMatch[2]);
|
|
195
195
|
}
|
|
@@ -333,22 +333,28 @@ export default class N3Writer {
|
|
|
333
333
|
this._prefixPatterns[iri] = [escapeRegex(iri), escapeRegex(prefix)];
|
|
334
334
|
this._write(`@prefix ${prefix} <${iri}>.\n`);
|
|
335
335
|
}
|
|
336
|
-
// Recreate the prefix matcher
|
|
336
|
+
// Recreate the prefix matcher when it is next needed, so that adding
|
|
337
|
+
// prefixes one by one does not rebuild it for every prefix
|
|
337
338
|
if (hasPrefixes) {
|
|
338
339
|
this._hasPrefixes = true;
|
|
339
|
-
|
|
340
|
-
for (const prefixIRI in this._prefixPatterns) {
|
|
341
|
-
const [IRIpattern, prefixPattern] = this._prefixPatterns[prefixIRI];
|
|
342
|
-
IRIlist += IRIlist ? `|${IRIpattern}` : IRIpattern;
|
|
343
|
-
prefixList += prefixList ? `|${prefixPattern}` : prefixPattern;
|
|
344
|
-
}
|
|
345
|
-
this._prefixRegex = new RegExp(`^(?:${prefixList})[^/]*$|` +
|
|
346
|
-
`^(${IRIlist})([_a-zA-Z0-9](?:\\.?[\\-_a-zA-Z0-9])*)$`);
|
|
340
|
+
this._prefixRegex = null;
|
|
347
341
|
}
|
|
348
342
|
// End a prefix block with a newline
|
|
349
343
|
this._write(hasPrefixes ? '\n' : '', done);
|
|
350
344
|
}
|
|
351
345
|
|
|
346
|
+
// ### `_createPrefixRegex` creates the matcher for the current prefixes
|
|
347
|
+
_createPrefixRegex() {
|
|
348
|
+
let IRIlist = '', prefixList = '';
|
|
349
|
+
for (const prefixIRI in this._prefixPatterns) {
|
|
350
|
+
const [IRIpattern, prefixPattern] = this._prefixPatterns[prefixIRI];
|
|
351
|
+
IRIlist += IRIlist ? `|${IRIpattern}` : IRIpattern;
|
|
352
|
+
prefixList += prefixList ? `|${prefixPattern}` : prefixPattern;
|
|
353
|
+
}
|
|
354
|
+
return this._prefixRegex = new RegExp(`^(?:${prefixList})[^/]*$|` +
|
|
355
|
+
`^(${IRIlist})([_a-zA-Z0-9](?:\\.?[\\-_a-zA-Z0-9])*)$`);
|
|
356
|
+
}
|
|
357
|
+
|
|
352
358
|
// ### `blank` creates a blank node with the given content
|
|
353
359
|
blank(predicate, object) {
|
|
354
360
|
let children = predicate, child, length;
|