mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-23 10:07:19 +00:00
* Fix for #3306, inline/block widget glitch * Just realized we don't need to set lastIndex anymore * Forgot that parseBlocks doesn't use options
This commit is contained in:
parent
010158db81
commit
4c7dcb83d1
@ -53,17 +53,12 @@ exports.parse = function() {
|
|||||||
tag.isBlock = this.is.block || hasLineBreak;
|
tag.isBlock = this.is.block || hasLineBreak;
|
||||||
// Parse the body if we need to
|
// Parse the body if we need to
|
||||||
if(!tag.isSelfClosing && $tw.config.htmlVoidElements.indexOf(tag.tag) === -1) {
|
if(!tag.isSelfClosing && $tw.config.htmlVoidElements.indexOf(tag.tag) === -1) {
|
||||||
var reEndString = "</" + $tw.utils.escapeRegExp(tag.tag) + ">",
|
var reEndString = "</" + $tw.utils.escapeRegExp(tag.tag) + ">";
|
||||||
reEnd = new RegExp("(" + reEndString + ")","mg");
|
|
||||||
if(hasLineBreak) {
|
if(hasLineBreak) {
|
||||||
tag.children = this.parser.parseBlocks(reEndString);
|
tag.children = this.parser.parseBlocks(reEndString);
|
||||||
} else {
|
} else {
|
||||||
tag.children = this.parser.parseInlineRun(reEnd);
|
var reEnd = new RegExp("(" + reEndString + ")","mg");
|
||||||
}
|
tag.children = this.parser.parseInlineRun(reEnd,{eatTerminator: true});
|
||||||
reEnd.lastIndex = this.parser.pos;
|
|
||||||
var endMatch = reEnd.exec(this.parser.source);
|
|
||||||
if(endMatch && endMatch.index === this.parser.pos) {
|
|
||||||
this.parser.pos = endMatch.index + endMatch[0].length;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Return the tag
|
// Return the tag
|
||||||
|
@ -103,6 +103,12 @@ describe("WikiText parser tests", function() {
|
|||||||
[ { type : 'element', tag : 'p', children : [ { type : 'element', start : 0, attributes : { }, tag : 'div', end : 5, isBlock : false, children : [ { type : 'element', start : 5, attributes : { attribute : { start : 9, name : 'attribute', type : 'indirect', textReference : 'TiddlerTitle!!field', end : 43 } }, tag : 'div', end : 44, isBlock : false, children : [ { type : 'text', text : '\n!some heading' } ] } ] } ] } ]
|
[ { type : 'element', tag : 'p', children : [ { type : 'element', start : 0, attributes : { }, tag : 'div', end : 5, isBlock : false, children : [ { type : 'element', start : 5, attributes : { attribute : { start : 9, name : 'attribute', type : 'indirect', textReference : 'TiddlerTitle!!field', end : 43 } }, tag : 'div', end : 44, isBlock : false, children : [ { type : 'text', text : '\n!some heading' } ] } ] } ] } ]
|
||||||
|
|
||||||
);
|
);
|
||||||
|
// Regression test for issue (#3306)
|
||||||
|
expect(parse("<div><span><span>\n\nSome text</span></span></div>")).toEqual(
|
||||||
|
|
||||||
|
[ { type : 'element', tag : 'p', children : [ { type : 'element', start : 0, attributes : { }, tag : 'div', end : 5, isBlock : false, children : [ { type : 'element', start : 5, attributes : { }, tag : 'span', end : 11, isBlock : false, children : [ { type : 'element', start : 11, attributes : { }, tag : 'span', end : 17, isBlock : true, children : [ { type : 'element', tag : 'p', children : [ { type : 'text', text : 'Some text' } ] } ] } ] } ] } ] } ]
|
||||||
|
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should parse macro definitions", function() {
|
it("should parse macro definitions", function() {
|
||||||
|
Loading…
Reference in New Issue
Block a user