Kawai Wiki

Rev

Blame | Last modification | View Log | RSS feed

package org.kawai.tag;

import javax.servlet.jsp.JspException;

import org.kawai.model.Page;
import org.mentaregex.Regex;
import org.mentawai.tag.util.PrintTag;

public class KawaiTagInterpreter extends PrintTag {
       
        private String name;
       
        public void setName(String name) {
                this.name = name;
        }
       
        public String getStringToPrint() throws JspException {
               
                Page page = (Page) pageContext.findAttribute(name);
                if (page == null) {
                        throw new JspException("Cannot find page with name: " + name);
                }
               
                String body = page.getBody();
               
                body = translateContextPath(body);
               
                return body;
        }
       
        private String escapeSlash(String s) {
                if (s.contains("/")) {
                        s = Regex.escapeSlash(s, "\\\\");
                }
                return s;
        }
       
        private String translateContextPath(String body) {
                String cp = req.getContextPath();
                cp = escapeSlash(cp);
                return Regex.sub(body, "s/\\[contextPath\\]/" + cp + "/g");
        }
}