/* * Copyright (C) 2010 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.clearsilver.jsilver.functions.bundles; import com.google.clearsilver.jsilver.functions.escape.*; import com.google.clearsilver.jsilver.functions.html.CssUrlValidateFunction; import com.google.clearsilver.jsilver.functions.html.HtmlStripFunction; import com.google.clearsilver.jsilver.functions.html.HtmlUrlValidateFunction; import com.google.clearsilver.jsilver.functions.html.TextHtmlFunction; import com.google.clearsilver.jsilver.functions.numeric.AbsFunction; import com.google.clearsilver.jsilver.functions.numeric.MaxFunction; import com.google.clearsilver.jsilver.functions.numeric.MinFunction; import com.google.clearsilver.jsilver.functions.string.CrcFunction; import com.google.clearsilver.jsilver.functions.string.FindFunction; import com.google.clearsilver.jsilver.functions.string.LengthFunction; import com.google.clearsilver.jsilver.functions.string.SliceFunction; import com.google.clearsilver.jsilver.functions.structure.FirstFunction; import com.google.clearsilver.jsilver.functions.structure.LastFunction; import com.google.clearsilver.jsilver.functions.structure.SubcountFunction; /** * Set of functions required to allow JSilver to be compatible with ClearSilver. */ public class ClearSilverCompatibleFunctions extends CoreOperators { @Override protected void setupDefaultFunctions() { super.setupDefaultFunctions(); // Structure functions. registerFunction("subcount", new SubcountFunction()); registerFunction("first", new FirstFunction()); registerFunction("last", new LastFunction()); // Deprecated - but here for ClearSilver compatibility. registerFunction("len", new SubcountFunction()); // Numeric functions. registerFunction("abs", new AbsFunction()); registerFunction("max", new MaxFunction()); registerFunction("min", new MinFunction()); // String functions. registerFunction("string.slice", new SliceFunction()); registerFunction("string.find", new FindFunction()); registerFunction("string.length", new LengthFunction()); registerFunction("string.crc", new CrcFunction()); // Escaping functions. registerFunction("url_escape", new UrlEscapeFunction("UTF-8"), true); registerEscapeMode("url", new UrlEscapeFunction("UTF-8")); registerFunction("html_escape", new HtmlEscapeFunction(false), true); registerEscapeMode("html", new HtmlEscapeFunction(false)); registerFunction("js_escape", new JsEscapeFunction(false), true); registerEscapeMode("js", new JsEscapeFunction(false)); // These functions are available as arguments to // though they aren't in ClearSilver. This is so that auto escaping // can automatically add nodes with these modes registerEscapeMode("html_unquoted", new HtmlEscapeFunction(true)); registerEscapeMode("js_attr_unquoted", new JsEscapeFunction(true)); registerEscapeMode("js_check_number", new JsValidateUnquotedLiteral()); registerEscapeMode("url_validate_unquoted", new HtmlUrlValidateFunction(true)); registerEscapeMode("css", new StyleEscapeFunction(false)); registerEscapeMode("css_unquoted", new StyleEscapeFunction(true)); // HTML functions. registerFunction("html_strip", new HtmlStripFunction()); registerFunction("text_html", new TextHtmlFunction()); // url_validate is available as an argument to // though it isn't in ClearSilver. registerFunction("url_validate", new HtmlUrlValidateFunction(false), true); registerEscapeMode("url_validate", new HtmlUrlValidateFunction(false)); registerFunction("css_url_validate", new CssUrlValidateFunction(), true); // Register as an EscapingFunction so that autoescaping will be disabled // for the output of this function. registerFunction("null_escape", new NullEscapeFunction(), true); } }