r1093 - in trunk/wikitty-publication: . src/main/java/org/nuiton/wikitty/publication
Author: mfortun Date: 2011-07-27 15:25:23 +0200 (Wed, 27 Jul 2011) New Revision: 1093 Url: http://nuiton.org/repositories/revision/wikitty/1093 Log: * add nuiton processor as dependency * script engine replacement with filter Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/FilterOption.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/PublicationUiFilter.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/UiCodeDecorator.java Modified: trunk/wikitty-publication/pom.xml Modified: trunk/wikitty-publication/pom.xml =================================================================== --- trunk/wikitty-publication/pom.xml 2011-07-26 14:25:46 UTC (rev 1092) +++ trunk/wikitty-publication/pom.xml 2011-07-27 13:25:23 UTC (rev 1093) @@ -107,6 +107,12 @@ <artifactId>xwork-core</artifactId> </dependency> + <dependency> + <groupId>org.nuiton.processor</groupId> + <artifactId>nuiton-processor</artifactId> + <version>1.2.1</version> + </dependency> + </dependencies> <!-- ************************************************************* --> Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/FilterOption.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/FilterOption.java (rev 0) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/FilterOption.java 2011-07-27 13:25:23 UTC (rev 1093) @@ -0,0 +1,59 @@ +package org.nuiton.wikitty.publication; + +public class FilterOption { + + protected String writeString; + protected String stringDelim; + protected String concatChar; + protected boolean passEmptyLine = false; + protected boolean writeParentheses = true; + protected String endingCar; + protected String prefixFirstWriteString; + + public String getWriteString() { + return writeString; + } + public void setWriteString(String writeString) { + this.writeString = writeString; + } + public String getStringDelim() { + return stringDelim; + } + public void setStringDelim(String stringDelim) { + this.stringDelim = stringDelim; + } + public String getConcatChar() { + return concatChar; + } + public void setConcatChar(String concatChar) { + this.concatChar = concatChar; + } + public boolean isPassEmptyLine() { + return passEmptyLine; + } + public void setPassEmptyLine(boolean passEmptyLine) { + this.passEmptyLine = passEmptyLine; + } + public boolean isWriteParentheses() { + return writeParentheses; + } + public void setWriteParentheses(boolean writeParentheses) { + this.writeParentheses = writeParentheses; + } + public String getEndingCar() { + return endingCar; + } + public void setEndingCar(String endingCar) { + this.endingCar = endingCar; + } + public String getPrefixFirstWriteString() { + return prefixFirstWriteString; + } + public void setPrefixFirstWriteString(String prefixFirstWriteString) { + this.prefixFirstWriteString = prefixFirstWriteString; + } + + + + +} Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/FilterOption.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/PublicationUiFilter.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/PublicationUiFilter.java (rev 0) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/PublicationUiFilter.java 2011-07-27 13:25:23 UTC (rev 1093) @@ -0,0 +1,164 @@ +package org.nuiton.wikitty.publication; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.processor.filters.DefaultFilter; + +/** + * Filter inspired from generatorTemplateFilterIn. + * + * Use to parse any wikittyPubText content to transform + * + * @author mfortun + * + */ +public class PublicationUiFilter extends DefaultFilter { + + private static final Log log = LogFactory.getLog(PublicationUiFilter.class); + + protected String beginParenthese = EMPTY_STRING; + + protected String endParenthese = EMPTY_STRING; + + protected boolean passEmptyLine; + protected boolean writeParentheses; + + protected String concatString; + + protected String stringDelim; + + protected String writeString; + protected String endingCar; + + public PublicationUiFilter() { + stringDelim = "\""; + concatString = "+"; + passEmptyLine = false; + writeParentheses = true; + writeString = "output.write"; + endingCar = ";"; + } + + /** + * méthode appelée lorsqu'on a la chaîne entière entre le header et le + * footer. + * + * @param ch + * la chaîne trouvé + * @return ce qu'il faut écrire dans le fichier de sortie + */ + @Override + protected String performInFilter(String ch) { + if (writeParentheses) { + beginParenthese = "("; + endParenthese = ")"; + } else { + beginParenthese = EMPTY_STRING; + endParenthese = EMPTY_STRING; + } + if (ch.startsWith("=")) { + return stringDelim + concatString + ch.substring(1) + concatString + + stringDelim; + } + return stringDelim + endParenthese + endingCar + ch + writeString + + beginParenthese + stringDelim; + } + + /** + * Converti les fin de commentaire *) en fin normal de commentraire + * + * @param ch + * la chaine a convertir + * @return la chaine convertie + */ + protected String convertEndComment(String ch) { + String result = ch.replaceAll("\\*\\)", "*/"); + return result; + } + + /** + * methode appele lorsqu'on a la chaine entiere a l'exterieur du + * header/footer + * + * @param ch + * la chaine trouve + * @return ce qu'il faut ecrire dans le fichier de sortie + */ + @Override + protected String performOutFilter(String ch) { + if (writeParentheses) { + beginParenthese = "("; + endParenthese = ")" + endingCar; + } else { + beginParenthese = EMPTY_STRING; + endParenthese = EMPTY_STRING; + } + String result = convertEndComment(ch).replaceAll("\"", "\\\\\"") + .replaceAll( + "(\r\n|\n|\r)", + "\\\\n\"" + endParenthese + endingCar + stringDelim + + writeString + beginParenthese + stringDelim); + // it's important that \r\n is first in regexp. + + return result; + } + + @Override + protected String getHeader() { + return "<%"; + } + + @Override + protected String getFooter() { + return "%>"; + } + + public boolean isPassEmptyLine() { + return passEmptyLine; + } + + public void setPassEmptyLine(boolean passEmptyLine) { + this.passEmptyLine = passEmptyLine; + } + + public String getConcatString() { + return concatString; + } + + public void setConcatString(String concatString) { + this.concatString = concatString; + } + + public String getStringDelim() { + return stringDelim; + } + + public void setStringDelim(String stringDelim) { + this.stringDelim = stringDelim; + } + + public boolean isWriteParentheses() { + return writeParentheses; + } + + public void setWriteParentheses(boolean writeParentheses) { + this.writeParentheses = writeParentheses; + } + + public String getWriteString() { + return writeString; + } + + public void setWriteString(String writeString) { + this.writeString = writeString; + } + + public String getEndingCar() { + return endingCar; + } + + public void setEndingCar(String endingCar) { + this.endingCar = endingCar; + } + +} Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/PublicationUiFilter.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/UiCodeDecorator.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/UiCodeDecorator.java (rev 0) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/UiCodeDecorator.java 2011-07-27 13:25:23 UTC (rev 1093) @@ -0,0 +1,103 @@ +package org.nuiton.wikitty.publication; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.lang.StringUtils; +import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.publication.entities.WikittyPubText; + +public class UiCodeDecorator { + + /* + * Après le script engine le ui Code décorateur + * + * décorer à l'inverse en fait transformer du html en js qui contient du + * html par exemple + */ + + protected String DEFAULT_MIME_TYPE_RETURN = "text/html"; + protected String MIME_SEP = "/"; + + protected Map<String, FilterOption> filtersOptions; + + static protected FilterOption defaultFilterOption; + protected String decoringInit = StringUtils.EMPTY; + protected String decoringAffect; + protected String decoringEnd; + + + static { + defaultFilterOption= new FilterOption(); + defaultFilterOption.setPrefixFirstWriteString("var "); + defaultFilterOption.setWriteString("result= \""); + defaultFilterOption.setStringDelim("\""); + defaultFilterOption.setConcatChar("+"); + defaultFilterOption.setEndingCar(";"); + defaultFilterOption.setWriteParentheses(false); + } + + + public UiCodeDecorator() { + filtersOptions= new HashMap<String, FilterOption>(); + } + + public WikittyPubText transformPubUIToPubText(WikittyPubText wikitty) { + + PublicationUiFilter filterUI = new PublicationUiFilter(); + + String mime = wikitty.getMimeType(); + String initialVersion = wikitty.getWikittyVersion(); + + /* + * changement de mime type changement de + */ + /* + * Fonction du mime type + */ + + String[] mimeTab = StringUtil.split(mime, MIME_SEP); + + FilterOption foption = filtersOptions.get(mimeTab[1]); + if (foption == null) { + foption = defaultFilterOption; + } + + filterUI.setConcatString(foption.getConcatChar()); + filterUI.setPassEmptyLine(foption.isPassEmptyLine()); + filterUI.setWriteParentheses(foption.isWriteParentheses()); + filterUI.setStringDelim(foption.getStringDelim()); + filterUI.setWriteString(foption.getWriteString()); + filterUI.setEndingCar(foption.getEndingCar()); + + decoringEnd = foption.getStringDelim() + foption.getEndingCar(); + decoringAffect = foption.getPrefixFirstWriteString() + + foption.getWriteString(); + // initialize new content + String decoredContent = decoringInit; + + // set default content result (override if wikitty content define it) + decoredContent += WikittyPublicationConstant.CONTEXT_VAR + + ".setContentType(\"" + DEFAULT_MIME_TYPE_RETURN + "\")" + + foption.getEndingCar(); + + decoredContent += decoringAffect; + // replace element between <% %> and <%= %> + decoredContent += filterUI.parse(wikitty.getContent()); + + // end of string + decoredContent += decoringEnd; + + wikitty.setContent(decoredContent); + wikitty.setMimeType(mime); + wikitty.setWikittyVersion(initialVersion); + + return wikitty; + } + + public boolean isTransformationNeeded(WikittyPubText wikitty){ + return true; + } + + +} Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/UiCodeDecorator.java ___________________________________________________________________ Added: svn:mime-type + text/plain
participants (1)
-
mfortun@users.nuiton.org