/
opt
/
canhelp
/
node_modules
/
postgres-array
/
/opt/canhelp/node_modules/postgres-array
mkdir
upload
Name
Size
Mode
Actions
index.d.ts
131
0644
edit
dl
rm
index.js
2320
0644
edit
dl
rm
license
1111
0644
edit
dl
rm
package.json
649
0644
edit
dl
rm
readme.md
692
0644
edit
dl
rm
Edit:
/opt/canhelp/node_modules/postgres-array/index.js
(2320B)
'use strict' exports.parse = function (source, transform) { return new ArrayParser(source, transform).parse() } class ArrayParser { constructor (source, transform) { this.source = source this.transform = transform || identity this.position = 0 this.entries = [] this.recorded = [] this.dimension = 0 } isEof () { return this.position >= this.source.length } nextCharacter () { var character = this.source[this.position++] if (character === '\\') { return { value: this.source[this.position++], escaped: true } } return { value: character, escaped: false } } record (character) { this.recorded.push(character) } newEntry (includeEmpty) { var entry if (this.recorded.length > 0 || includeEmpty) { entry = this.recorded.join('') if (entry === 'NULL' && !includeEmpty) { entry = null } if (entry !== null) entry = this.transform(entry) this.entries.push(entry) this.recorded = [] } } consumeDimensions () { if (this.source[0] === '[') { while (!this.isEof()) { var char = this.nextCharacter() if (char.value === '=') break } } } parse (nested) { var character, parser, quote this.consumeDimensions() while (!this.isEof()) { character = this.nextCharacter() if (character.value === '{' && !quote) { this.dimension++ if (this.dimension > 1) { parser = new ArrayParser(this.source.substr(this.position - 1), this.transform) this.entries.push(parser.parse(true)) this.position += parser.position - 2 } } else if (character.value === '}' && !quote) { this.dimension-- if (!this.dimension) { this.newEntry() if (nested) return this.entries } } else if (character.value === '"' && !character.escaped) { if (quote) this.newEntry(true) quote = !quote } else if (character.value === ',' && !quote) { this.newEntry() } else { this.record(character.value) } } if (this.dimension !== 0) { throw new Error('array dimension not balanced') } return this.entries } } function identity (value) { return value }
Save
cmd:
run