This commit is contained in:
Kevin Anthoney 2016-08-04 19:58:37 +01:00
Родитель a5f816837f
Коммит d024aedb91
3 изменённых файлов: 31 добавлений и 0 удалений

Просмотреть файл

@ -1,6 +1,7 @@
'use strict';
const _ = require('lodash');
const identifier = require('./identifier');
var escape = function(s, noquote)
{
@ -11,6 +12,12 @@ var escape = function(s, noquote)
return `'${s.replace(/\'/g, "''")}'`;
}
}
if(s instanceof identifier) {
return escape(s.toString(), true);
}
if(_.isNull(s)) {
return 'null';
}
if(_.isArray(s)) {
var els = _.map(s, function(el) {
return `${escape(el)}`;

15
identifier.js Normal file
Просмотреть файл

@ -0,0 +1,15 @@
'use strict';
var Identifier = function(s)
{
this.s = s;
return this;
};
Identifier.prototype.toString = function()
{
return this.s.toString();
};
module.exports = Identifier;

Просмотреть файл

@ -1,6 +1,7 @@
'use strict';
const escape = require('../escape');
const identifier = require('../identifier');
describe('escape value tests', function() {
@ -16,6 +17,10 @@ describe('escape value tests', function() {
expect(escape(3.1)).toEqual('3.1');
});
it('should escape null', function() {
expect(escape(null)).toEqual('null');
});
it('should escape [1,\'2\']', function() {
expect(escape([1,'2'])).toEqual('[1,\'2\']');
});
@ -28,5 +33,9 @@ describe('escape value tests', function() {
expect(escape({a:'\'text\'',b:{c:6,d:'\'string\''}})).toEqual('{a:\'\'\'text\'\'\',b:{c:6,d:\'\'\'string\'\'\'}}');
});
it('should escape identifier(\'a\')', function() {
expect(escape(new identifier('a'))).toEqual('a');
});
});