[jboss-cvs] jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/util ...

Christian Bauer christian at hibernate.org
Tue Nov 13 02:58:09 EST 2007


  User: cbauer  
  Date: 07/11/13 02:58:09

  Modified:    examples/wiki/src/main/org/jboss/seam/wiki/util 
                        WikiUtil.java
  Log:
  Fixed 'create user homepage' bug, added macro detection
  
  Revision  Changes    Path
  1.20      +34 -0     jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/util/WikiUtil.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: WikiUtil.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/util/WikiUtil.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -b -r1.19 -r1.20
  --- WikiUtil.java	9 Nov 2007 15:08:27 -0000	1.19
  +++ WikiUtil.java	13 Nov 2007 07:58:09 -0000	1.20
  @@ -7,10 +7,14 @@
   package org.jboss.seam.wiki.util;
   
   import org.jboss.seam.Component;
  +import org.jboss.seam.ui.validator.FormattedTextValidator;
   import org.jboss.seam.international.Messages;
   import org.jboss.seam.core.Conversation;
   import org.jboss.seam.wiki.core.action.prefs.WikiPreferences;
   import org.jboss.seam.wiki.core.model.*;
  +import org.jboss.seam.wiki.core.engine.WikiTextParser;
  +import org.jboss.seam.wiki.core.engine.WikiLinkResolver;
  +import org.jboss.seam.wiki.core.engine.NullWikiTextRenderer;
   
   import javax.faces.context.FacesContext;
   import javax.imageio.ImageIO;
  @@ -29,6 +33,9 @@
   import java.net.URLEncoder;
   import java.text.SimpleDateFormat;
   
  +import antlr.RecognitionException;
  +import antlr.ANTLRException;
  +
   /**
    * Adds stuff to and for JSF that should be there but isn't. Also stuff that is exposed
    * as a Facelets function, and various other useful static methods that are called from
  @@ -241,6 +248,33 @@
   
       }
   
  +    public static String findMacros(Document currentDocument, Directory currentDirectory, String wikitext) {
  +        if (wikitext == null) return null;
  +        final StringBuilder usedMacros = new StringBuilder();
  +        WikiTextParser parser = new WikiTextParser(wikitext, false, false);
  +        parser.setCurrentDocument(currentDocument);
  +        parser.setCurrentDirectory(currentDirectory);
  +        parser.setResolver((WikiLinkResolver)Component.getInstance("wikiLinkResolver"));
  +
  +        try {
  +            class MacroRenderer extends NullWikiTextRenderer {
  +                public String renderMacro(String macroName) {
  +                    usedMacros.append(macroName).append(" ");
  +                    return null;
  +                }
  +            }
  +            parser.setRenderer( new MacroRenderer() ).parse(false);
  +
  +        } catch (RecognitionException rex) {
  +            // Swallowing, we don't really care if there was a parse error
  +        } catch (ANTLRException ex) {
  +            // All other errors are fatal;
  +            throw new RuntimeException(ex);
  +        }
  +
  +        return usedMacros.toString();
  +    }
  +
       // TODO: This would be the job of a more flexible seam text parser...
       public static String disableFloats(String string) {
           return string.replaceAll("float:\\s?(right)|(left)", "float:none")
  
  
  



More information about the jboss-cvs-commits mailing list