fix folding for self closing tags. fix #548

This commit is contained in:
Fabian Jakobs 2011-12-05 15:36:05 +01:00
commit 9fee4b7d96
4 changed files with 227 additions and 40 deletions

View file

@ -40,8 +40,6 @@ if (typeof process !== "undefined")
define(function(require, exports, module) {
var FoldMode = require("./mixed").FoldMode;
var XmlFoldMode = require("./xml").FoldMode;
var HtmlMode = require("../html").Mode;
var EditSession = require("../../edit_session").EditSession;
var assert = require("../../test/assertions");
@ -59,6 +57,7 @@ module.exports = {
var mode = new HtmlMode();
session.setMode(mode);
session.setFoldStyle("markbeginend");
assert.equal(session.getFoldWidget(0), "start");
assert.equal(session.getFoldWidget(1), "start");
@ -84,6 +83,7 @@ module.exports = {
var mode = new HtmlMode();
session.setMode(mode);
session.setFoldStyle("markbeginend");
assert.equal(session.getFoldWidget(0), "start");
assert.equal(session.getFoldWidget(1), "start");
@ -96,11 +96,73 @@ module.exports = {
assert.range(session.getFoldWidgetRange(1), 1, 17, 3, 4);
assert.range(session.getFoldWidgetRange(3), 1, 17, 3, 4);
}
},
"test: fold should skip self closing elements": function() {
var session = new EditSession([
'<body>',
'<br />',
'</body>'
]);
var mode = new HtmlMode();
session.setMode(mode);
session.setFoldStyle("markbeginend");
assert.equal(session.getFoldWidget(0), "start");
assert.equal(session.getFoldWidget(1), "");
assert.equal(session.getFoldWidget(2), "end");
assert.range(session.getFoldWidgetRange(0), 0, 7, 2, 0);
assert.range(session.getFoldWidgetRange(2), 0, 7, 2, 0);
},
"test: fold should skip void elements": function() {
var session = new EditSession([
'<body>',
'<br>',
'</body>'
]);
var mode = new HtmlMode();
session.setMode(mode);
session.setFoldStyle("markbeginend");
assert.equal(session.getFoldWidget(0), "start");
assert.equal(session.getFoldWidget(1), "");
assert.equal(session.getFoldWidget(2), "end");
assert.range(session.getFoldWidgetRange(0), 0, 7, 2, 0);
assert.range(session.getFoldWidgetRange(2), 0, 7, 2, 0);
},
"test: fold multiple unclosed elements": function() {
var session = new EditSession([
'<div>',
'<p>',
'juhu',
'<p>',
'kinners',
'</div>'
]);
var mode = new HtmlMode();
session.setMode(mode);
session.setFoldStyle("markbeginend");
assert.equal(session.getFoldWidget(0), "start");
assert.equal(session.getFoldWidget(1), "");
assert.equal(session.getFoldWidget(2), "");
assert.equal(session.getFoldWidget(3), "");
assert.equal(session.getFoldWidget(4), "");
assert.equal(session.getFoldWidget(5), "end");
assert.range(session.getFoldWidgetRange(0), 0, 6, 5, 0);
assert.range(session.getFoldWidgetRange(5), 0, 6, 5, 0);
}
};
});
if (typeof process !== "undefined")
if (typeof module !== "undefined" && module === require.main)
require("asyncjs").test.testcase(module.exports).exec();