mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-08-05 21:33:52 +00:00
fix: some test
This commit is contained in:
parent
e49238df55
commit
383e1b68b5
@ -104,8 +104,8 @@ exports.serialize = function(tree, serialize) {
|
|||||||
}).join(",");
|
}).join(",");
|
||||||
// Definition text
|
// Definition text
|
||||||
var definition = tree.attributes.value.value;
|
var definition = tree.attributes.value.value;
|
||||||
// Construct the serialized string
|
// Construct the serialized string, concat the children because pragma rule wrap everything below it as children
|
||||||
return "\\" + type + " " + name + "(" + params + ")\n" + definition + "\n\\end";
|
return "\\" + type + " " + name + "(" + params + ")\n" + definition + "\n\\end\n\n" + serialize(tree.children) + "\n";
|
||||||
};
|
};
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
@ -53,23 +53,22 @@ exports.parse = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} while(match && !match[1]);
|
} while(match && !match[1]);
|
||||||
// Return the nodes
|
// Mark first and last node, and return the nodes
|
||||||
|
if(tree[0]) tree[0].isRuleStart = true;
|
||||||
|
if(tree[tree.length-1]) tree[tree.length-1].isRuleEnd = true;
|
||||||
return tree;
|
return tree;
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.serialize = function(tree,serialize) {
|
exports.serialize = function(tree,serialize) {
|
||||||
// Serialized text with hard line breaks
|
// we get each of element on tree from `parse` one by one here.
|
||||||
var serialized = '"""\n';
|
var text = tree.tag === 'br' ? '\n' : tree.text;
|
||||||
// Serialize each node in the tree
|
if(tree.isRuleStart) {
|
||||||
tree.forEach(function(node) {
|
return '"""\n' + text;
|
||||||
if(node.type === "element" && node.tag === "br") {
|
}
|
||||||
serialized += "\n";
|
if(tree.isRuleEnd) {
|
||||||
} else {
|
return text + '"""';
|
||||||
serialized += serialize([node]).join('');
|
}
|
||||||
}
|
return text;
|
||||||
});
|
|
||||||
serialized += '\n"""';
|
|
||||||
return serialized;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
@ -47,14 +47,11 @@ exports.parse = function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
exports.serialize = function(tree, serialize) {
|
exports.serialize = function(tree, serialize) {
|
||||||
// Heading level
|
// Get heading level from number after `h`
|
||||||
var headingLevel = tree.tag.length - 1;
|
var headingLevel = parseInt(tree.tag.substr(1),10);
|
||||||
// Classes
|
|
||||||
var classes = tree.attributes.class ? tree.attributes.class.value.split(" ").join(".") : "";
|
var classes = tree.attributes.class ? tree.attributes.class.value.split(" ").join(".") : "";
|
||||||
// Serialized heading text
|
var headingText = serialize(tree.children);
|
||||||
var headingText = serialize(tree.children).join('');
|
return Array(headingLevel + 1).join("!") + (classes ? "." + classes : "") + " " + headingText + "\n";
|
||||||
// Construct the serialized string
|
|
||||||
return Array(headingLevel + 1).join("!") + (classes ? "." + classes : "") + " " + headingText;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
@ -199,7 +199,7 @@ exports.serialize = function(tree, serialize) {
|
|||||||
var tag = tree.tag;
|
var tag = tree.tag;
|
||||||
var attributes = Object.keys(tree.attributes).map(function(key) {
|
var attributes = Object.keys(tree.attributes).map(function(key) {
|
||||||
return key + '="' + tree.attributes[key].value + '"';
|
return key + '="' + tree.attributes[key].value + '"';
|
||||||
});
|
}).join('');
|
||||||
// Children
|
// Children
|
||||||
var children = tree.children ? serialize(tree.children) : '';
|
var children = tree.children ? serialize(tree.children) : '';
|
||||||
// Self-closing tag
|
// Self-closing tag
|
||||||
|
@ -131,16 +131,14 @@ exports.parseImage = function(source,pos) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
exports.serialize = function(tree) {
|
exports.serialize = function(tree) {
|
||||||
// Width attribute
|
// DEBUG: console tree
|
||||||
|
console.warn(`tree`, JSON.stringify(tree, null, ' '));
|
||||||
var width = tree.attributes.width ? " width=" + tree.attributes.width.value : "";
|
var width = tree.attributes.width ? " width=" + tree.attributes.width.value : "";
|
||||||
// Height attribute
|
|
||||||
var height = tree.attributes.height ? " height=" + tree.attributes.height.value : "";
|
var height = tree.attributes.height ? " height=" + tree.attributes.height.value : "";
|
||||||
// Tooltip attribute
|
var padSpace = width || height ? " " : "";
|
||||||
var tooltip = tree.attributes.tooltip ? tree.attributes.tooltip.value + "|" : "";
|
var tooltip = tree.attributes.tooltip ? tree.attributes.tooltip.value + "|" : "";
|
||||||
// Source attribute
|
|
||||||
var source = tree.attributes.source.value;
|
var source = tree.attributes.source.value;
|
||||||
// Construct the serialized string
|
return "[img" + width + height + padSpace + "[" + tooltip + source + "]]";
|
||||||
return "[img" + width + height + " [" + tooltip + source + "]]";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
@ -7,7 +7,7 @@ Tests the wikitext inverse-rendering from Wiki AST.
|
|||||||
|
|
||||||
\*/
|
\*/
|
||||||
|
|
||||||
describe('WikiAST serialization tests', function () {
|
describe('WikiAST serialization unit tests', function () {
|
||||||
var wiki = new $tw.Wiki();
|
var wiki = new $tw.Wiki();
|
||||||
|
|
||||||
wiki.addTiddler({
|
wiki.addTiddler({
|
||||||
@ -64,35 +64,35 @@ describe('WikiAST serialization tests', function () {
|
|||||||
expect(serialized).toBe(wiki.getTiddlerText('UnderscoreEmphasisTest').trimEnd());
|
expect(serialized).toBe(wiki.getTiddlerText('UnderscoreEmphasisTest').trimEnd());
|
||||||
});
|
});
|
||||||
|
|
||||||
wiki.addTiddler({ title: 'TiddlerOne', text: 'The quick brown fox' });
|
wiki.addTiddler({ title: 'SimpleTextTest', text: 'The quick brown fox' });
|
||||||
it('should render tiddlers with no special markup as-is', function () {
|
it('should render tiddlers with no special markup as-is', function () {
|
||||||
// `trimEnd` because when we handle `p` element when parsing block rules, we always add a newline. But original text that may not have a trailing newline, will still be recognized as a block.
|
// `trimEnd` because when we handle `p` element when parsing block rules, we always add a newline. But original text that may not have a trailing newline, will still be recognized as a block.
|
||||||
expect($tw.utils.serializeParseTree(wiki.parseTiddler('TiddlerOne').tree).trimEnd()).toBe(
|
expect($tw.utils.serializeParseTree(wiki.parseTiddler('SimpleTextTest').tree).trimEnd()).toBe(
|
||||||
wiki.getTiddlerText('TiddlerOne')
|
wiki.getTiddlerText('SimpleTextTest')
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
wiki.addTiddler({ title: 'TiddlerTwo', text: 'The rain in Spain\nfalls mainly on the plain' });
|
wiki.addTiddler({ title: 'SoftLineBreakTest', text: 'The rain in Spain\nfalls mainly on the plain' });
|
||||||
it('should preserve single new lines', function () {
|
it('should preserve single new lines', function () {
|
||||||
expect($tw.utils.serializeParseTree(wiki.parseTiddler('TiddlerTwo').tree).trimEnd()).toBe(
|
expect($tw.utils.serializeParseTree(wiki.parseTiddler('SoftLineBreakTest').tree).trimEnd()).toBe(
|
||||||
wiki.getTiddlerText('TiddlerTwo')
|
wiki.getTiddlerText('SoftLineBreakTest')
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
wiki.addTiddler({ title: 'TiddlerThree', text: 'The speed of sound\n\nThe light of speed' });
|
wiki.addTiddler({ title: 'BlockRule', text: 'The speed of sound\n\nThe light of speed' });
|
||||||
it('should preserve double new lines to create paragraphs', function () {
|
it('should preserve double new lines to create paragraphs', function () {
|
||||||
expect($tw.utils.serializeParseTree(wiki.parseTiddler('TiddlerThree').tree).trimEnd()).toBe(
|
expect($tw.utils.serializeParseTree(wiki.parseTiddler('BlockRule').tree).trimEnd()).toBe(
|
||||||
wiki.getTiddlerText('TiddlerThree')
|
wiki.getTiddlerText('BlockRule')
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
wiki.addTiddler({
|
wiki.addTiddler({
|
||||||
title: 'TiddlerFour',
|
title: 'CodeBlockTest',
|
||||||
text: 'Simple `JS` and complex\n\n---\n\n```js\nvar match = reEnd.exec(this.parser.source)\n```\nend',
|
text: 'Simple `JS` and complex\n\n---\n\n```js\nvar match = reEnd.exec(this.parser.source)\n```\nend',
|
||||||
});
|
});
|
||||||
it('should render inline code and block code', function () {
|
it('should render inline code and block code', function () {
|
||||||
expect($tw.utils.serializeParseTree(wiki.parseTiddler('TiddlerFour').tree).trimEnd()).toBe(
|
expect($tw.utils.serializeParseTree(wiki.parseTiddler('CodeBlockTest').tree).trimEnd()).toBe(
|
||||||
wiki.getTiddlerText('TiddlerFour')
|
wiki.getTiddlerText('CodeBlockTest')
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -177,7 +177,6 @@ describe('WikiAST serialization tests', function () {
|
|||||||
var serialized = $tw.utils.serializeParseTree(wiki.parseTiddler('FunctionDefinition').tree).trimEnd();
|
var serialized = $tw.utils.serializeParseTree(wiki.parseTiddler('FunctionDefinition').tree).trimEnd();
|
||||||
expect(serialized).toBe(wiki.getTiddlerText('FunctionDefinition').trimEnd());
|
expect(serialized).toBe(wiki.getTiddlerText('FunctionDefinition').trimEnd());
|
||||||
});
|
});
|
||||||
return;
|
|
||||||
|
|
||||||
wiki.addTiddler({
|
wiki.addTiddler({
|
||||||
title: 'HardLineBreaksTest',
|
title: 'HardLineBreaksTest',
|
||||||
@ -214,6 +213,7 @@ describe('WikiAST serialization tests', function () {
|
|||||||
var serialized = $tw.utils.serializeParseTree(wiki.parseTiddler('ImageTest').tree).trimEnd();
|
var serialized = $tw.utils.serializeParseTree(wiki.parseTiddler('ImageTest').tree).trimEnd();
|
||||||
expect(serialized).toBe(wiki.getTiddlerText('ImageTest').trimEnd());
|
expect(serialized).toBe(wiki.getTiddlerText('ImageTest').trimEnd());
|
||||||
});
|
});
|
||||||
|
return;
|
||||||
|
|
||||||
wiki.addTiddler({
|
wiki.addTiddler({
|
||||||
title: 'ImportTest',
|
title: 'ImportTest',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user