Home | History | Annotate | Download | only in bundles
      1 /*
      2  * Copyright (C) 2010 Google Inc.
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  * http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.google.clearsilver.jsilver.functions.bundles;
     18 
     19 import com.google.clearsilver.jsilver.functions.escape.*;
     20 import com.google.clearsilver.jsilver.functions.html.CssUrlValidateFunction;
     21 import com.google.clearsilver.jsilver.functions.html.HtmlStripFunction;
     22 import com.google.clearsilver.jsilver.functions.html.HtmlUrlValidateFunction;
     23 import com.google.clearsilver.jsilver.functions.html.TextHtmlFunction;
     24 import com.google.clearsilver.jsilver.functions.numeric.AbsFunction;
     25 import com.google.clearsilver.jsilver.functions.numeric.MaxFunction;
     26 import com.google.clearsilver.jsilver.functions.numeric.MinFunction;
     27 import com.google.clearsilver.jsilver.functions.string.CrcFunction;
     28 import com.google.clearsilver.jsilver.functions.string.FindFunction;
     29 import com.google.clearsilver.jsilver.functions.string.LengthFunction;
     30 import com.google.clearsilver.jsilver.functions.string.SliceFunction;
     31 import com.google.clearsilver.jsilver.functions.structure.FirstFunction;
     32 import com.google.clearsilver.jsilver.functions.structure.LastFunction;
     33 import com.google.clearsilver.jsilver.functions.structure.SubcountFunction;
     34 
     35 /**
     36  * Set of functions required to allow JSilver to be compatible with ClearSilver.
     37  */
     38 public class ClearSilverCompatibleFunctions extends CoreOperators {
     39 
     40   @Override
     41   protected void setupDefaultFunctions() {
     42     super.setupDefaultFunctions();
     43 
     44     // Structure functions.
     45     registerFunction("subcount", new SubcountFunction());
     46     registerFunction("first", new FirstFunction());
     47     registerFunction("last", new LastFunction());
     48 
     49     // Deprecated - but here for ClearSilver compatibility.
     50     registerFunction("len", new SubcountFunction());
     51 
     52     // Numeric functions.
     53     registerFunction("abs", new AbsFunction());
     54     registerFunction("max", new MaxFunction());
     55     registerFunction("min", new MinFunction());
     56 
     57     // String functions.
     58     registerFunction("string.slice", new SliceFunction());
     59     registerFunction("string.find", new FindFunction());
     60     registerFunction("string.length", new LengthFunction());
     61     registerFunction("string.crc", new CrcFunction());
     62 
     63     // Escaping functions.
     64     registerFunction("url_escape", new UrlEscapeFunction("UTF-8"), true);
     65     registerEscapeMode("url", new UrlEscapeFunction("UTF-8"));
     66     registerFunction("html_escape", new HtmlEscapeFunction(false), true);
     67     registerEscapeMode("html", new HtmlEscapeFunction(false));
     68     registerFunction("js_escape", new JsEscapeFunction(false), true);
     69     registerEscapeMode("js", new JsEscapeFunction(false));
     70 
     71     // These functions are available as arguments to <?cs escape: ?>
     72     // though they aren't in ClearSilver. This is so that auto escaping
     73     // can automatically add <?cs escape ?> nodes with these modes
     74     registerEscapeMode("html_unquoted", new HtmlEscapeFunction(true));
     75     registerEscapeMode("js_attr_unquoted", new JsEscapeFunction(true));
     76     registerEscapeMode("js_check_number", new JsValidateUnquotedLiteral());
     77     registerEscapeMode("url_validate_unquoted", new HtmlUrlValidateFunction(true));
     78 
     79     registerEscapeMode("css", new StyleEscapeFunction(false));
     80     registerEscapeMode("css_unquoted", new StyleEscapeFunction(true));
     81 
     82     // HTML functions.
     83     registerFunction("html_strip", new HtmlStripFunction());
     84     registerFunction("text_html", new TextHtmlFunction());
     85 
     86     // url_validate is available as an argument to <?cs escape: ?>
     87     // though it isn't in ClearSilver.
     88     registerFunction("url_validate", new HtmlUrlValidateFunction(false), true);
     89     registerEscapeMode("url_validate", new HtmlUrlValidateFunction(false));
     90 
     91     registerFunction("css_url_validate", new CssUrlValidateFunction(), true);
     92     // Register as an EscapingFunction so that autoescaping will be disabled
     93     // for the output of this function.
     94     registerFunction("null_escape", new NullEscapeFunction(), true);
     95   }
     96 
     97 }
     98