package de.neuland.jade4j.compiler;
import de.neuland.jade4j.Jade4J;
import de.neuland.jade4j.JadeConfiguration;
import de.neuland.jade4j.TestFileHelper;
import de.neuland.jade4j.exceptions.JadeCompilerException;
import de.neuland.jade4j.expression.ExpressionHandler;
import de.neuland.jade4j.filter.*;
import de.neuland.jade4j.lexer.Lexer;
import de.neuland.jade4j.lexer.token.Token;
import de.neuland.jade4j.template.FileTemplateLoader;
import de.neuland.jade4j.template.JadeTemplate;
import de.neuland.jade4j.template.TemplateLoader;
import org.apache.commons.io.FileUtils;
import org.junit.Ignore;
import org.junit.Test;
import java.io.*;
import java.util.HashMap;
import java.util.LinkedList;
import static org.junit.Assert.assertEquals;
@Ignore
public class OriginalJade20150515SingleTest {
String templateName = "attrs2";
@Test
public void testCase() throws IOException, JadeCompilerException {
JadeConfiguration jade = getJadeConfiguration();
Lexer lexer = initLexer(templateName,jade);
LinkedList<Token> tokens = lexer.getTokens();
testJade(templateName, jade);
}
protected Lexer initLexer(String fileName, JadeConfiguration jade) {
try {
TemplateLoader loader = jade.getTemplateLoader();
ExpressionHandler expressionHandler = jade.getExpressionHandler();
return new Lexer(fileName+".jade", loader, expressionHandler);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private void testJade(String path, JadeConfiguration jade) throws IOException {
File file = new File(getResourcePath(path + ".jade"));
JadeTemplate template = jade.getTemplate(path+".jade");
Writer writer = new StringWriter();
HashMap<String, Object> model = getModel();
jade.renderTemplate(template, model, writer);
String html = writer.toString();
String expected = readFile(file.getPath().replace(".jade", ".html")).trim().replaceAll("\r", "");
assertEquals(file.getName(), expected, html.trim());
}
private HashMap<String, Object> getModel() {
HashMap<String, Object> model = new HashMap<String, Object>();
model.put("title","Jade");
return model;
}
private JadeConfiguration getJadeConfiguration() {
JadeConfiguration jade = new JadeConfiguration();
jade.setTemplateLoader(new FileTemplateLoader(getResourcePath(""), "UTF-8"));
// jade.setExpressionHandler(new JsExpressionHandler());
jade.setMode(Jade4J.Mode.XHTML); // original jade uses xhtml by default
jade.setFilter("plain", new PlainFilter());
jade.setFilter("cdata", new CDATAFilter());
jade.setFilter("marked", new MarkdownFilter());
jade.setFilter("custom-filter", new CustomTestFilter());
jade.setFilter("verbatim", new VerbatimFilter());
jade.setPrettyPrint(true);
return jade;
}
private String readFile(String fileName) {
try {
return FileUtils.readFileToString(new File(fileName));
} catch (Exception e) {
// e.printStackTrace();
}
return "";
}
private String getResourcePath(String filename) {
try {
return TestFileHelper.getLexerResourcePath(filename);
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
}
}
}