1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2026-06-17 02:38:51 +00:00

Compare commits

...

2 Commits

Author SHA1 Message Date
Jeremy Ruston 8663dd51d6 Initial commit
Thanks @PotOfCoffee2Go
2023-11-17 16:44:34 +00:00
Robin Munn 215bd4e015 Avoid skipping extra whitespace in wikiparser.js (#7835)
When wikiparser parses text looking for a pragma block, it skips
whitespace before looking for the next pragma. If no pragma is found,
we should return the parse position to the original location so that the
skipped whitespace can be parsed as a text node. This allows the
attribute `join=" and "` to parse as " and " rather than "and ".
2023-11-14 22:10:58 +00:00
2 changed files with 48 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
/*\
title: $:/core/modules/commands/jsrepl.js
type: application/javascript
module-type: command
Command to launch node.js REPL with access to $tw
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
name: "jsrepl",
synchronous: true
};
var Command = function(params,commander,callback) {
var self = this;
this.params = params;
this.commander = commander;
this.callback = callback;
};
Command.prototype.execute = function() {
var self = this;
var repl = require("repl");
this.runtime = repl.start({
prompt: this.params.length ? this.params[0] : "$tw-jsrepl> ",
useColors: true,
ignoreUndefined: true
});
// If REPL is reset (.clear) - context needs resetting
this.runtime.on("reset", function() {
self.runtime.context.$tw = $tw;
});
// Initial context settings
this.runtime.context.$tw = $tw;
return null;
};
exports.Command = Command;
})();
@@ -194,6 +194,7 @@ Parse any pragmas at the beginning of a block of parse text
WikiParser.prototype.parsePragmas = function() {
var currentTreeBranch = this.tree;
while(true) {
var savedPos = this.pos;
// Skip whitespace
this.skipWhitespace();
// Check for the end of the text
@@ -204,6 +205,7 @@ WikiParser.prototype.parsePragmas = function() {
var nextMatch = this.findNextMatch(this.pragmaRules,this.pos);
// If not, just exit
if(!nextMatch || nextMatch.matchIndex !== this.pos) {
this.pos = savedPos;
break;
}
// Process the pragma rule