mirror of
				https://github.com/Jermolene/TiddlyWiki5
				synced 2025-10-31 15:42:59 +00:00 
			
		
		
		
	Remove support for conditional definitions
It was introduced for use cases associated with the global mechanism that was dropped in e3d13696c8
			
			
This commit is contained in:
		| @@ -35,7 +35,7 @@ Instantiate parse rule | |||||||
| exports.init = function(parser) { | exports.init = function(parser) { | ||||||
| 	this.parser = parser; | 	this.parser = parser; | ||||||
| 	// Regexp to match | 	// Regexp to match | ||||||
| 	this.matchRegExp = /^\\(\??)(function|procedure|widget)\s+([^(\s]+)(\(\s*([^)]*)\))?(\s*\r?\n)?/mg; | 	this.matchRegExp = /^\\(function|procedure|widget)\s+([^(\s]+)(\(\s*([^)]*)\))?(\s*\r?\n)?/mg; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /* | /* | ||||||
| @@ -46,12 +46,12 @@ exports.parse = function() { | |||||||
| 	this.parser.pos = this.matchRegExp.lastIndex; | 	this.parser.pos = this.matchRegExp.lastIndex; | ||||||
| 	// Parse the parameters | 	// Parse the parameters | ||||||
| 	var params = []; | 	var params = []; | ||||||
| 	if(this.match[4]) { | 	if(this.match[3]) { | ||||||
| 		params = $tw.utils.parseParameterDefinition(this.match[5]); | 		params = $tw.utils.parseParameterDefinition(this.match[4]); | ||||||
| 	} | 	} | ||||||
| 	// Is this a multiline definition? | 	// Is this a multiline definition? | ||||||
| 	var reEnd; | 	var reEnd; | ||||||
| 	if(this.match[6]) { | 	if(this.match[5]) { | ||||||
| 		// If so, the end of the body is marked with \end | 		// If so, the end of the body is marked with \end | ||||||
| 		reEnd = /(\r?\n\\end[^\S\n\r]*(?:$|\r?\n))/mg; | 		reEnd = /(\r?\n\\end[^\S\n\r]*(?:$|\r?\n))/mg; | ||||||
| 	} else { | 	} else { | ||||||
| @@ -78,21 +78,18 @@ exports.parse = function() { | |||||||
| 		children: [], | 		children: [], | ||||||
| 		params: params | 		params: params | ||||||
| 	}]; | 	}]; | ||||||
| 	$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],"name",this.match[3]); | 	$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],"name",this.match[2]); | ||||||
| 	$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],"value",text); | 	$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],"value",text); | ||||||
| 	if(this.match[2] === "function") { | 	if(this.match[1] === "function") { | ||||||
| 		parseTreeNodes[0].isFunctionDefinition = true; | 		parseTreeNodes[0].isFunctionDefinition = true; | ||||||
| 	} else if(this.match[2] === "procedure") { | 	} else if(this.match[1] === "procedure") { | ||||||
| 		parseTreeNodes[0].isProcedureDefinition = true; | 		parseTreeNodes[0].isProcedureDefinition = true; | ||||||
| 	} else if(this.match[2] === "widget") { | 	} else if(this.match[1] === "widget") { | ||||||
| 		parseTreeNodes[0].isWidgetDefinition = true; | 		parseTreeNodes[0].isWidgetDefinition = true; | ||||||
| 	} | 	} | ||||||
| 	if(this.parser.configTrimWhiteSpace) { | 	if(this.parser.configTrimWhiteSpace) { | ||||||
| 		parseTreeNodes[0].configTrimWhiteSpace = true; | 		parseTreeNodes[0].configTrimWhiteSpace = true; | ||||||
| 	} | 	} | ||||||
| 	if(this.match[1] === "?") { |  | ||||||
| 		$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],"conditional","yes"); |  | ||||||
| 	} |  | ||||||
| 	return parseTreeNodes; | 	return parseTreeNodes; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -27,7 +27,7 @@ Instantiate parse rule | |||||||
| exports.init = function(parser) { | exports.init = function(parser) { | ||||||
| 	this.parser = parser; | 	this.parser = parser; | ||||||
| 	// Regexp to match | 	// Regexp to match | ||||||
| 	this.matchRegExp = /^\\(\??)define\s+([^(\s]+)\(\s*([^)]*)\)(\s*\r?\n)?/mg; | 	this.matchRegExp = /^\\define\s+([^(\s]+)\(\s*([^)]*)\)(\s*\r?\n)?/mg; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /* | /* | ||||||
| @@ -37,7 +37,7 @@ exports.parse = function() { | |||||||
| 	// Move past the macro name and parameters | 	// Move past the macro name and parameters | ||||||
| 	this.parser.pos = this.matchRegExp.lastIndex; | 	this.parser.pos = this.matchRegExp.lastIndex; | ||||||
| 	// Parse the parameters | 	// Parse the parameters | ||||||
| 	var paramString = this.match[3], | 	var paramString = this.match[2], | ||||||
| 		params = []; | 		params = []; | ||||||
| 	if(paramString !== "") { | 	if(paramString !== "") { | ||||||
| 		var reParam = /\s*([A-Za-z0-9\-_]+)(?:\s*:\s*(?:"""([\s\S]*?)"""|"([^"]*)"|'([^']*)'|\[\[([^\]]*)\]\]|([^"'\s]+)))?/mg, | 		var reParam = /\s*([A-Za-z0-9\-_]+)(?:\s*:\s*(?:"""([\s\S]*?)"""|"([^"]*)"|'([^']*)'|\[\[([^\]]*)\]\]|([^"'\s]+)))?/mg, | ||||||
| @@ -56,7 +56,7 @@ exports.parse = function() { | |||||||
| 	} | 	} | ||||||
| 	// Is this a multiline definition? | 	// Is this a multiline definition? | ||||||
| 	var reEnd; | 	var reEnd; | ||||||
| 	if(this.match[4]) { | 	if(this.match[3]) { | ||||||
| 		// If so, the end of the body is marked with \end | 		// If so, the end of the body is marked with \end | ||||||
| 		reEnd = /(\r?\n\\end[^\S\n\r]*(?:$|\r?\n))/mg; | 		reEnd = /(\r?\n\\end[^\S\n\r]*(?:$|\r?\n))/mg; | ||||||
| 	} else { | 	} else { | ||||||
| @@ -84,11 +84,8 @@ exports.parse = function() { | |||||||
| 		params: params, | 		params: params, | ||||||
| 		isMacroDefinition: true | 		isMacroDefinition: true | ||||||
| 	}]; | 	}]; | ||||||
| 	$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],"name",this.match[2]); | 	$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],"name",this.match[1]); | ||||||
| 	$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],"value",text); | 	$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],"value",text); | ||||||
| 	if(this.match[1] === "?") { |  | ||||||
| 		$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],"conditional","yes"); |  | ||||||
| 	} |  | ||||||
| 	return parseTreeNodes; | 	return parseTreeNodes; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -47,21 +47,17 @@ SetWidget.prototype.execute = function() { | |||||||
| 	this.setIndex = this.getAttribute("index"); | 	this.setIndex = this.getAttribute("index"); | ||||||
| 	this.setValue = this.getAttribute("value"); | 	this.setValue = this.getAttribute("value"); | ||||||
| 	this.setEmptyValue = this.getAttribute("emptyValue"); | 	this.setEmptyValue = this.getAttribute("emptyValue"); | ||||||
| 	this.setConditional = this.getAttribute("conditional","no") === "yes"; | 	// Set context variable | ||||||
| 	// Ignore if this is a conditional assignment and the variable already has a value | 	if(this.parseTreeNode.isMacroDefinition) { | ||||||
| 	if(!this.setConditional || this.getVariableInfo(this.setName).text === undefined) { | 		this.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,true); | ||||||
| 		// Set context variable | 	} else if(this.parseTreeNode.isFunctionDefinition) { | ||||||
| 		if(this.parseTreeNode.isMacroDefinition) { | 		this.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,undefined,{isFunctionDefinition: true}); | ||||||
| 			this.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,true); | 	} else if(this.parseTreeNode.isProcedureDefinition) { | ||||||
| 		} else if(this.parseTreeNode.isFunctionDefinition) { | 		this.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,undefined,{isProcedureDefinition: true, configTrimWhiteSpace: this.parseTreeNode.configTrimWhiteSpace}); | ||||||
| 			this.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,undefined,{isFunctionDefinition: true}); | 	} else if(this.parseTreeNode.isWidgetDefinition) { | ||||||
| 		} else if(this.parseTreeNode.isProcedureDefinition) { | 		this.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,undefined,{isWidgetDefinition: true, configTrimWhiteSpace: this.parseTreeNode.configTrimWhiteSpace}); | ||||||
| 			this.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,undefined,{isProcedureDefinition: true, configTrimWhiteSpace: this.parseTreeNode.configTrimWhiteSpace}); | 	} else { | ||||||
| 		} else if(this.parseTreeNode.isWidgetDefinition) { | 		this.setVariable(this.setName,this.getValue()); | ||||||
| 			this.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,undefined,{isWidgetDefinition: true, configTrimWhiteSpace: this.parseTreeNode.configTrimWhiteSpace}); |  | ||||||
| 		} else { |  | ||||||
| 			this.setVariable(this.setName,this.getValue()); |  | ||||||
| 		} |  | ||||||
| 	} | 	} | ||||||
| 	// Construct the child widgets | 	// Construct the child widgets | ||||||
| 	this.makeChildWidgets(); | 	this.makeChildWidgets(); | ||||||
| @@ -115,7 +111,7 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of | |||||||
| */ | */ | ||||||
| SetWidget.prototype.refresh = function(changedTiddlers) { | SetWidget.prototype.refresh = function(changedTiddlers) { | ||||||
| 	var changedAttributes = this.computeAttributes(); | 	var changedAttributes = this.computeAttributes(); | ||||||
| 	if(changedAttributes.name || changedAttributes.filter || changedAttributes.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue || changedAttributes.conditional || | 	if(changedAttributes.name || changedAttributes.filter || changedAttributes.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue || | ||||||
| 	   (this.setFilter && this.getValue() != this.variables[this.setName].value)) { | 	   (this.setFilter && this.getValue() != this.variables[this.setName].value)) { | ||||||
| 		this.refreshSelf(); | 		this.refreshSelf(); | ||||||
| 		return true; | 		return true; | ||||||
|   | |||||||
| @@ -23,7 +23,6 @@ The content of the `<$set>` widget is the scope for the value assigned to the va | |||||||
| |filter |An optional filter to be evaluated and assigned to the variable (see "Filtered List Variable Assignment" below). The variable can be used with the <<.olink enlist>> operator | | |filter |An optional filter to be evaluated and assigned to the variable (see "Filtered List Variable Assignment" below). The variable can be used with the <<.olink enlist>> operator | | ||||||
| |select |<<.from-version "5.1.14">> An optional zero-based index of the item to return from the filter output (see below) | | |select |<<.from-version "5.1.14">> An optional zero-based index of the item to return from the filter output (see below) | | ||||||
| |emptyValue |The value to assign to the variable if the specified value is missing or empty (see below) | | |emptyValue |The value to assign to the variable if the specified value is missing or empty (see below) | | ||||||
| |conditional |<<.from-version "5.3.0">> If set to "yes" then the assignment only occurs if the variable does not already have a value (defaults to "no") | |  | ||||||
|  |  | ||||||
| <<.tip """If the value of your variable is enclosed in double square brackets this might indicate that you are returning a list of values from the filter. To use a single title from the filter output without the double square brackets see ''Filtered Item Variable Assignment'' below.""">> | <<.tip """If the value of your variable is enclosed in double square brackets this might indicate that you are returning a list of values from the filter. To use a single title from the filter output without the double square brackets see ''Filtered Item Variable Assignment'' below.""">> | ||||||
|  |  | ||||||
| @@ -55,19 +54,6 @@ src='<$set name=anotherVariable value="myVariable"> | |||||||
|  |  | ||||||
| <<< | <<< | ||||||
|  |  | ||||||
| !! Conditional Variable Assignment |  | ||||||
|  |  | ||||||
| This form of the set variable widget chooses one of two specified values according to whether a filter evaluates to an empty list. Here's an example that sets a variable according to whether the current tiddler is called "myMagicTitle": |  | ||||||
|  |  | ||||||
| <<< |  | ||||||
|  |  | ||||||
| <$macrocall $name='wikitext-example-without-html'  |  | ||||||
| src="""<$set name="myVariable" filter="[all[current]field:title[myMagicTitle]]" value="It's magic" emptyValue="It's not magic"> |  | ||||||
| <$text text=<<myVariable>>/> |  | ||||||
| </$set>""" /> |  | ||||||
|  |  | ||||||
| <<< |  | ||||||
|  |  | ||||||
| !! Filtered List Variable Assignment | !! Filtered List Variable Assignment | ||||||
|  |  | ||||||
| This form of the set variable widget evaluates the filter and assigns the result to the variable as a space-separated list (using double square brackets for titles containing spaces). | This form of the set variable widget evaluates the filter and assigns the result to the variable as a space-separated list (using double square brackets for titles containing spaces). | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 jeremy@jermolene.com
					jeremy@jermolene.com