Fixed Template class to be much nicer and pass all tests
This commit is contained in:
parent
500f45b77a
commit
88477e97c9
4 changed files with 64 additions and 29 deletions
|
|
@ -76,12 +76,12 @@ public class MathParser {
|
|||
}
|
||||
else{
|
||||
if(c == '('){
|
||||
MathNode parantes = new MathNode();
|
||||
MathOperation previusParantes = previus;
|
||||
parse(functionString, temp, previus, parantes);
|
||||
previusParantes.math2 = parantes;
|
||||
System.out.println(parantes);
|
||||
container = parantes;
|
||||
MathNode parenteses = new MathNode();
|
||||
MathOperation previousParanteses = previus;
|
||||
parse(functionString, temp, previus, parenteses);
|
||||
previousParanteses.math2 = parenteses;
|
||||
System.out.println(parenteses);
|
||||
container = parenteses;
|
||||
|
||||
// get the next operation
|
||||
c = functionString.charAt(0);
|
||||
|
|
|
|||
|
|
@ -75,37 +75,39 @@ public class Templator {
|
|||
}
|
||||
private void parseTemplate(TemplateNode root, String tmpl, MutableInt m){
|
||||
StringBuilder data = new StringBuilder();
|
||||
StringBuilder tags = new StringBuilder();
|
||||
boolean tagOpen = false;
|
||||
boolean secondOpenBracet = false;
|
||||
boolean secondCloseBracet = false;
|
||||
|
||||
for(; m.i<tmpl.length(); ++m.i){
|
||||
char c = tmpl.charAt(m.i);
|
||||
switch(c){
|
||||
case '{':
|
||||
c = tmpl.charAt(++m.i);
|
||||
switch(c){
|
||||
case '{':
|
||||
root.addEntity(new TmplStaticString(data.toString()));
|
||||
data = new StringBuilder();
|
||||
break;
|
||||
default:
|
||||
data.append('{').append(c);
|
||||
}
|
||||
String d = ""+ c + (m.i+1<tmpl.length() ? tmpl.charAt(m.i+1) : ' ');
|
||||
switch( d ){
|
||||
case "{{":
|
||||
root.addEntity(new TmplStaticString(data.toString()));
|
||||
data.delete(0, data.length());
|
||||
tags.delete(0, data.length());
|
||||
tags.append("{{");
|
||||
tagOpen = true;
|
||||
++m.i;
|
||||
|
||||
break;
|
||||
case '}':
|
||||
c = tmpl.charAt(++m.i);
|
||||
switch(c){
|
||||
case '}':
|
||||
break;
|
||||
default:
|
||||
data.append('}').append(c);
|
||||
case "}}":
|
||||
if(!tagOpen){ // Tag not opened, incorrect enclosure
|
||||
data.append(c);
|
||||
continue;
|
||||
}
|
||||
tagOpen = false;
|
||||
++m.i;
|
||||
root.addEntity(new TmplDataAttribute(data.toString()));
|
||||
data.delete(0, data.length());
|
||||
break;
|
||||
default:
|
||||
data.append(c);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(tagOpen)
|
||||
data.insert(0, tags);
|
||||
if(data.length() > 0)
|
||||
root.addEntity(new TmplStaticString(data.toString()));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue