001    package railo.transformer.cfml.evaluator.impl;
002    
003    import railo.runtime.config.Config;
004    import railo.runtime.exp.TemplateException;
005    import railo.transformer.bytecode.statement.tag.Tag;
006    import railo.transformer.bytecode.util.ASMUtil;
007    import railo.transformer.cfml.evaluator.EvaluatorSupport;
008    import railo.transformer.library.function.FunctionLib;
009    import railo.transformer.library.tag.TagLib;
010    import railo.transformer.library.tag.TagLibTag;
011    import railo.transformer.util.CFMLString;
012    
013    public final class PageEncoding extends EvaluatorSupport {
014        
015        public TagLib execute(Config config, Tag tag, TagLibTag libTag, FunctionLib[] flibs, CFMLString cfml) throws TemplateException {
016            String encoding=ASMUtil.getAttributeString(tag, "charset",null);
017            if(encoding==null)
018                    throw new TemplateException(cfml,"attribute [pageencoding] of the tag [processingdirective] must be a constant value");
019            
020            if(encoding.equalsIgnoreCase(cfml.getCharset()) || "UTF-8".equalsIgnoreCase(cfml.getCharset())) {
021                    encoding=null;
022            }
023            
024            if(encoding!=null){
025                    throw new ProcessingDirectiveException(cfml,encoding,cfml.getWriteLog()?Boolean.TRUE:Boolean.FALSE);
026            }
027            
028            
029            return null;
030            }
031    }