r290 - in trunk/nuiton-processor/src: main/java/org/nuiton/processor/filters test/java/org/nuiton/processor test/java/org/nuiton/processor/filters test/resources/org/nuiton/processor test/resources/org/nuiton/processor/filters
Author: fdesbois Date: 2009-10-20 17:06:33 +0200 (Tue, 20 Oct 2009) New Revision: 290 Added: trunk/nuiton-processor/src/test/java/org/nuiton/processor/CommonTest.java trunk/nuiton-processor/src/test/java/org/nuiton/processor/filters/ trunk/nuiton-processor/src/test/java/org/nuiton/processor/filters/StringFilterTest.java trunk/nuiton-processor/src/test/resources/org/nuiton/processor/filters/ trunk/nuiton-processor/src/test/resources/org/nuiton/processor/filters/StringFilterTest.java2 trunk/nuiton-processor/src/test/resources/org/nuiton/processor/filters/StringFilterTest_1.java2 Modified: trunk/nuiton-processor/src/main/java/org/nuiton/processor/filters/GeneratorTemplatesFilter.java trunk/nuiton-processor/src/main/java/org/nuiton/processor/filters/GeneratorTemplatesFilterIn.java Log: Temporary update for testing parentheses option on eugene javabuilder branche. Modified: trunk/nuiton-processor/src/main/java/org/nuiton/processor/filters/GeneratorTemplatesFilter.java =================================================================== --- trunk/nuiton-processor/src/main/java/org/nuiton/processor/filters/GeneratorTemplatesFilter.java 2009-10-11 11:27:24 UTC (rev 289) +++ trunk/nuiton-processor/src/main/java/org/nuiton/processor/filters/GeneratorTemplatesFilter.java 2009-10-20 15:06:33 UTC (rev 290) @@ -38,6 +38,9 @@ package org.nuiton.processor.filters; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + /* * Classe principale du filtre de génération. Ce filtre recherche tout ce qu'il * y a entre les tag /*{ et }*/ a l'interieur de ces tags un autre filtre @@ -58,15 +61,27 @@ * les options existantes sont: * <li>passEmptyLine: boolean; cette option permet de supprimer la première * et la dernière ligne si elles sont videx</li> + * <li>writeParentheses: boolean, default: true : cette option permet d'ajouter les + * parentheses autour du resultat (par defaut ces parentheses correspondent a celles + * de l'appel a la methode output.write)</li> * <li>wtriteString: String, default: output.write</li> */ public class GeneratorTemplatesFilter extends DefaultFilter { - protected boolean passEmptyLine = false; - protected String writeString = "output.write"; + private static final Log log = LogFactory.getLog(GeneratorTemplatesFilter.class); - protected GeneratorTemplatesFilterIn inFilter = new GeneratorTemplatesFilterIn(this); + protected boolean passEmptyLine; + protected boolean writeParentheses; + protected String writeString; + protected GeneratorTemplatesFilterIn inFilter; + public GeneratorTemplatesFilter() { + this.passEmptyLine = false; + this.writeParentheses = true; + this.writeString = "output.write"; + this.inFilter = new GeneratorTemplatesFilterIn(this); + } + public String getWriteString(){ return writeString; } @@ -86,6 +101,10 @@ writeString = ch.replaceAll("generator option: *writeString *= *(.*)", "$1"); return EMPTY_STRING; + }else if(ch.matches("generator option: *parentheses *= *(true|false)")){ + writeParentheses = + "true".equalsIgnoreCase(ch.substring(ch.length()-4)); + return EMPTY_STRING; }else{ if (passEmptyLine && ch.length() > 0){ // suppression des premieres et dernieres lignes si elles sont vides @@ -105,8 +124,21 @@ } } - String result = inFilter.parse(ch) + inFilter.flush(); - return getWriteString()+ "(\"" + result + "\");"; + String resultInFilter = inFilter.parse(ch) + inFilter.flush(); + + String result = getWriteString(); + if (writeParentheses) { + result += "("; + } + result += "\"" + resultInFilter + "\""; + if (writeParentheses) { + result += ");"; + } + + if (log.isDebugEnabled()) { + log.debug("writeParentheses = " + writeParentheses); + } + return result; } } Modified: trunk/nuiton-processor/src/main/java/org/nuiton/processor/filters/GeneratorTemplatesFilterIn.java =================================================================== --- trunk/nuiton-processor/src/main/java/org/nuiton/processor/filters/GeneratorTemplatesFilterIn.java 2009-10-11 11:27:24 UTC (rev 289) +++ trunk/nuiton-processor/src/main/java/org/nuiton/processor/filters/GeneratorTemplatesFilterIn.java 2009-10-20 15:06:33 UTC (rev 290) @@ -34,14 +34,23 @@ package org.nuiton.processor.filters; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + /** * Le tag *) n'est substitué que s'il est a l'extérieur du tag <%=...%>ou * <%...%> */ public class GeneratorTemplatesFilterIn extends DefaultFilter { // GeneratorTemplatesFilterIn + private static final Log log = LogFactory.getLog(GeneratorTemplatesFilterIn.class); + GeneratorTemplatesFilter parent = null; + protected String beginParenthese = ""; + protected String endParenthese = ""; + + public GeneratorTemplatesFilterIn(GeneratorTemplatesFilter parent) { this.parent = parent; } @@ -56,10 +65,14 @@ */ @Override protected String performInFilter(String ch) { + if (this.parent.writeParentheses) { + this.beginParenthese = "("; + this.endParenthese = ");"; + } if (ch.startsWith("=")) { return "\"+" + ch.substring(1) + "+\""; } - return "\");" + ch + parent.getWriteString() + "(\""; + return "\"" + endParenthese + ch + parent.getWriteString() + beginParenthese + "\""; } /** @@ -82,9 +95,13 @@ */ @Override protected String performOutFilter(String ch) { + if (this.parent.writeParentheses) { + this.beginParenthese = "("; + this.endParenthese = ");"; + } String result = convertEndComment(ch).replaceAll("\"", "\\\\\"") .replaceAll("(\r\n|\n|\r)", - "\\\\n\");\n" + parent.getWriteString() + "(\""); + "\\\\n\"" + endParenthese + "\n" + parent.getWriteString() + beginParenthese + "\""); // it's important that \r\n is first in regexp. return result; Added: trunk/nuiton-processor/src/test/java/org/nuiton/processor/CommonTest.java =================================================================== --- trunk/nuiton-processor/src/test/java/org/nuiton/processor/CommonTest.java (rev 0) +++ trunk/nuiton-processor/src/test/java/org/nuiton/processor/CommonTest.java 2009-10-20 15:06:33 UTC (rev 290) @@ -0,0 +1,77 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.nuiton.processor; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.codehaus.plexus.util.IOUtil; +import org.junit.Assert; + +/** + * + * @author fdesbois + */ +public abstract class CommonTest { + + protected static File basedir; + protected static File testdir; + + static private final Log log = LogFactory.getLog(CommonTest.class); + + //@BeforeClass + public static void initClass() throws Exception { + basedir = getBasedir(); + testdir = getFile(basedir, "target", "test-classes", "org", "nuiton", "processor", "result"); + testdir.mkdirs(); + } + + protected void checkPattern(String pattern, boolean required, File f) throws IOException { + + if (log.isDebugEnabled()) { + log.debug("check generated file " + f); + } + + Assert.assertTrue("generated file " + f + " was not found...", f.exists()); + String content = readAsString(f, "utf-8"); + + String errorMessage = required ? "could not find the pattern : " : "should not have found pattern :"; + Assert.assertEquals(errorMessage + pattern + " in file " + f, required, content.contains(pattern)); + } + + public static String readAsString(File file, String encoding) throws IOException { + FileInputStream inf = new FileInputStream(file); + BufferedReader in = new BufferedReader(new InputStreamReader(inf, encoding)); + try { + return IOUtil.toString(in); + } finally { + in.close(); + } + } + + public static File getFile(File base, String... paths) { + StringBuilder buffer = new StringBuilder(); + for (String path : paths) { + buffer.append(File.separator).append(path); + } + File f = new File(base, buffer.substring(1)); + return f; + } + + public static File getBasedir() { + String basedirPath = System.getProperty("basedir"); + + if (basedirPath == null) { + basedirPath = new File("").getAbsolutePath(); + } + + return new File(basedirPath); + } +} Added: trunk/nuiton-processor/src/test/java/org/nuiton/processor/filters/StringFilterTest.java =================================================================== --- trunk/nuiton-processor/src/test/java/org/nuiton/processor/filters/StringFilterTest.java (rev 0) +++ trunk/nuiton-processor/src/test/java/org/nuiton/processor/filters/StringFilterTest.java 2009-10-20 15:06:33 UTC (rev 290) @@ -0,0 +1,56 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.nuiton.processor.filters; + +import org.nuiton.processor.*; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * + * @author fdesbois + */ +public class StringFilterTest extends CommonTest { + + static private final Log log = LogFactory.getLog(StringFilterTest.class); + + @BeforeClass + public static void initClass() throws Exception { + CommonTest.initClass(); + } + + @Test + public void testStringFilter() throws IOException { + String fileName = "StringFilterTest.java2"; + String in = StringFilterTest.class.getResource(fileName).getFile(); + File out = getFile(testdir, fileName); + Processor processor = new Processor(); + processor.setInputFilter(new GeneratorTemplatesFilter()); + processor.process(new FileReader(in), new FileWriter(out)); + String content = readAsString(out, "utf-8"); + if (log.isDebugEnabled()) { + log.debug("output : " + out); + log.debug(content); + } + + fileName = "StringFilterTest_1.java2"; + in = StringFilterTest.class.getResource(fileName).getFile(); + out = getFile(testdir, fileName); + processor.process(new FileReader(in), new FileWriter(out)); + content = readAsString(out, "utf-8"); + if (log.isDebugEnabled()) { + log.debug("output : " + out); + log.debug(content); + } + //checkPattern("+\" int i = 0;\n\"", true, out); + } +} Added: trunk/nuiton-processor/src/test/resources/org/nuiton/processor/filters/StringFilterTest.java2 =================================================================== --- trunk/nuiton-processor/src/test/resources/org/nuiton/processor/filters/StringFilterTest.java2 (rev 0) +++ trunk/nuiton-processor/src/test/resources/org/nuiton/processor/filters/StringFilterTest.java2 2009-10-20 15:06:33 UTC (rev 290) @@ -0,0 +1,15 @@ + + +public class StringProcessorTest { + + public void testForStringTemplatesFilter() { + + String code = "" + /*{ int i = 0; + i = 1+2; + MonObject result = new MonObject(result); + return result; + }*/; + } + +} \ No newline at end of file Added: trunk/nuiton-processor/src/test/resources/org/nuiton/processor/filters/StringFilterTest_1.java2 =================================================================== --- trunk/nuiton-processor/src/test/resources/org/nuiton/processor/filters/StringFilterTest_1.java2 (rev 0) +++ trunk/nuiton-processor/src/test/resources/org/nuiton/processor/filters/StringFilterTest_1.java2 2009-10-20 15:06:33 UTC (rev 290) @@ -0,0 +1,13 @@ +/*{generator option: parentheses = true}*/ +/*{generator option: writeString = output.write}*/ +public class StringProcessorTest { + + public void testForStringTemplatesFilter() { + + /*{ + troulala; + */} + + } + +} \ No newline at end of file
participants (1)
-
fdesbois@users.nuiton.org