Handling quotes.
This commit is contained in:
Родитель
803e19bccb
Коммит
30caaf2f0f
|
@ -13,6 +13,8 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
var util = require('../../util/util');
|
||||
|
||||
// Expose 'ConnectionStringParser'.
|
||||
exports = module.exports = ConnectionStringParser;
|
||||
|
||||
|
@ -32,6 +34,7 @@ function ConnectionStringParser(connectionString) {
|
|||
}
|
||||
|
||||
ConnectionStringParser.prototype._parse = function () {
|
||||
var self = this;
|
||||
var parts = this._connectionString.split(';');
|
||||
var parsedConnectionString = { };
|
||||
|
||||
|
@ -41,7 +44,11 @@ ConnectionStringParser.prototype._parse = function () {
|
|||
if (part) {
|
||||
var currentKVP = part.split('=');
|
||||
if (currentKVP.length === 2) {
|
||||
parsedConnectionString[currentKVP[0].toLowerCase()] = currentKVP[1];
|
||||
if (currentKVP[0].length > 0) {
|
||||
parsedConnectionString[self._getValue(currentKVP[0].toLowerCase())] = self._getValue(currentKVP[1]);
|
||||
} else {
|
||||
throw new Error('Invalid key');
|
||||
}
|
||||
} else {
|
||||
throw new Error('Invalid connection string');
|
||||
}
|
||||
|
@ -49,4 +56,13 @@ ConnectionStringParser.prototype._parse = function () {
|
|||
});
|
||||
|
||||
return parsedConnectionString;
|
||||
};
|
||||
|
||||
ConnectionStringParser.prototype._getValue = function (str) {
|
||||
if ((util.stringStartsWith(str, '"') && util.stringEndsWith(str, '"')) ||
|
||||
(util.stringStartsWith(str, '\'') && util.stringEndsWith(str, '\''))) {
|
||||
return str.substring(1, str.length - 1);
|
||||
}
|
||||
|
||||
return str;
|
||||
};
|
|
@ -43,7 +43,7 @@ suite('connectionstringparser-tests', function () {
|
|||
done();
|
||||
});
|
||||
|
||||
test('parseInvalid', function (done) {
|
||||
test('parseInvalidAssignment', function (done) {
|
||||
// no assignment
|
||||
assert.throws(
|
||||
function() {
|
||||
|
@ -54,4 +54,32 @@ suite('connectionstringparser-tests', function () {
|
|||
|
||||
done();
|
||||
});
|
||||
|
||||
test('parseInvalidKey', function (done) {
|
||||
assert.throws(
|
||||
function() {
|
||||
var parsedConnectionString = ConnectionStringParser.parse('=value');
|
||||
},
|
||||
Error
|
||||
);
|
||||
|
||||
assert.throws(
|
||||
function() {
|
||||
var parsedConnectionString = ConnectionStringParser.parse(' =value');
|
||||
},
|
||||
Error
|
||||
);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
test('parseQuotedValues', function (done) {
|
||||
var parsedConnectionString = ConnectionStringParser.parse('"test"=\'value\'');
|
||||
assert.equal(parsedConnectionString['test'], 'value');
|
||||
|
||||
var parsedConnectionString = ConnectionStringParser.parse('\'test\'="value"');
|
||||
assert.equal(parsedConnectionString['test'], 'value');
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
Загрузка…
Ссылка в новой задаче