Skip to content

Commit

Permalink
corrected parameter handling
Browse files Browse the repository at this point in the history
  • Loading branch information
javalc6 committed Jun 13, 2023
1 parent a69a343 commit 336ebbe
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 23 deletions.
3 changes: 2 additions & 1 deletion wiki.html

Large diffs are not rendered by default.

28 changes: 16 additions & 12 deletions wiki/TemplateParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -103,20 +103,24 @@ private boolean parameter_holder(WikiScanner sh, StringBuilder sb, WikiPage wp,
{{{param_name|}}} --> (empty string)
reference: https://www.mediawiki.org/wiki/Help:Parser_functions_in_templates
*/
String param_name = sh.getIdentifierOrNumber();
String param_name = sh.getStringParameter(null);//sh.getIdentifierOrNumber();
String result = null;
if (param_name != null) {
String result = parent == null ? null : parent.getTemplateParameter(param_name);
String def_value = sh.getChar('|') ? sh.getStringParameter(null) : null;
while (sh.getChar('|')) {//ignore any further parameter(s)
sh.getStringParameter(null);
}
if (sh.getSequence("}}}")) {
if (result == null)
result = def_value == null ? "{{{" + param_name + "}}}" : parseParameter(def_value, wp, parent);//use literal or default value
sb.append(result);
return true;
}
param_name = parseParameter(param_name, wp, parent);
if (parent != null)
result = parent.getTemplateParameter(param_name);
}
String def_value = sh.getChar('|') ? sh.getStringParameter(null) : null;
while (sh.getChar('|')) {//ignore any further parameter(s)
sh.getStringParameter(null);
}
if (sh.getSequence("}}}")) {
if (result == null)
result = def_value == null ? "{{{" + param_name + "}}}" : parseParameter(def_value, wp, parent);//use literal or default value
sb.append(result);
//System.out.println("result:"+result);
return true;
}
return false;
}

Expand Down
18 changes: 8 additions & 10 deletions wiki/tools/WikiScanner.java
Original file line number Diff line number Diff line change
Expand Up @@ -201,17 +201,15 @@ public String getStringParameter(int[] equalPos) {//returns parameter, if any
}

public String getIdentifierOrNumber() {//returns identifier or number, if present at current position
Character ch = null;
while ((pointer < str.length()) && isWikiSpace(ch = str.charAt(pointer++)))
;
if (ch != null) {
StringBuilder sb = new StringBuilder().append(ch);
while ((pointer < str.length()) && (Character.isLetter(ch = str.charAt(pointer)) || Character.isDigit(ch)) || ("/-_ ".indexOf(ch) != -1)) {
sb.append(ch); pointer++;
}
if (sb.length() > 0)
return sb.toString();
while ((pointer < str.length()) && isWikiSpace(str.charAt(pointer)))
pointer++;
StringBuilder sb = new StringBuilder();
char ch;
while ((pointer < str.length()) && (Character.isLetter(ch = str.charAt(pointer)) || Character.isDigit(ch) || ("/-_ ".indexOf(ch) != -1))) {
sb.append(ch); pointer++;
}
if (sb.length() > 0)
return sb.toString();
return null;
}

Expand Down

0 comments on commit 336ebbe

Please sign in to comment.