/*
* 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 <?cs escape: ?>
// though they aren't in ClearSilver. This is so that auto escaping
// can automatically add <?cs escape ?> 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 <?cs escape: ?>
// 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);
}
}