Skip to content

Commit d6585d3

Browse files
author
Sandro Santilli
committed
Quote all needed XML chars. See less#263.
Includes testcase.
1 parent acf94e5 commit d6585d3

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

lib/carto/tree/quoted.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ tree.Quoted.prototype = {
1010
toString: function(quotes) {
1111
var xmlvalue = this.value.replace(/&/g, '&');
1212
xmlvalue = xmlvalue.replace(/\'/g, ''');
13+
xmlvalue = xmlvalue.replace(/\"/g, '"');
14+
xmlvalue = xmlvalue.replace(/\</g, '&lt;');
15+
xmlvalue = xmlvalue.replace(/\>/g, '&gt;');
1316
return (quotes === true) ? "'" + xmlvalue + "'" : this.value;
1417
},
1518

test/quoted.test.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@ require('../lib/carto/tree/quoted');
55
describe('Quoted', function() {
66
describe('basic functionality', function() {
77
it('should be constructed', function() {
8-
var f = new tree.Quoted("Tom's & quoted");
8+
var f = new tree.Quoted("Tom's & \"<quoted>\"");
99
assert.ok(f);
1010
assert.equal(f.is, 'string');
1111
});
1212
it('should produce normal output', function() {
13-
var f = new tree.Quoted("Tom's & quoted");
13+
var f = new tree.Quoted("Tom's & \"<quoted>\"");
1414
assert.ok(f);
15-
assert.equal(f.toString(), "Tom's & quoted");
15+
assert.equal(f.toString(), "Tom's & \"<quoted>\"");
1616
});
1717
it('should produce xml-friendly output', function() {
18-
var f = new tree.Quoted("Tom's & quoted");
18+
var f = new tree.Quoted("Tom's & \"<quoted>\"");
1919
assert.ok(f);
20-
assert.equal(f.toString(true), "'Tom&apos;s &amp; quoted'");
20+
assert.equal(f.toString(true), "'Tom&apos;s &amp; &quot;&lt;quoted&gt;&quot;'");
2121
});
2222
});
2323
});

0 commit comments

Comments
 (0)