All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.gwt.safehtml.client.SafeHtmlTemplates Maven / Gradle / Ivy

/*
 * Copyright 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.gwt.safehtml.client;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * A tag interface that facilitates compile-time binding of HTML templates to
 * generate SafeHtml strings.
 *
 * 

* Example usage: * *

 *   public interface MyTemplate extends SafeHtmlTemplates {
 *     @Template("<span class=\"{3}\">{0}: <a href=\"{1}\">{2}</a></span>")
 *     SafeHtml messageWithLink(SafeHtml message, String url, String linkText,
 *       String style);
 *   }
 *
 *   private static final MyTemplate TEMPLATE = GWT.create(MyTemplate.class);
 *
 *   public void useTemplate(...) {
 *     SafeHtml message;
 *     String url;
 *     String linkText;
 *     String style;
 *     // ...
 *     SafeHtml messageWithLink =
 *       TEMPLATE.messageWithLink(message, url, linkText, style);
 *   }
 * 
* *

* Instantiating a {@code SafeHtmlTemplates} interface with {@code GWT.create()} * returns an instance of an implementation that is generated at compile time. * The code generator parses the value of each template method's * {@code @Template} annotation as an HTML template, with template * variables denoted by curly-brace placeholders that refer by index to the * corresponding template method parameter. * *

* The code generator's template parser is lenient, and will accept HTML that is * not well-formed; the accepted set of HTML is similar to what is typically * accepted by browsers. However, the following constraints on the HTML template * are enforced: * *

    *
  1. Template variables may not appear in a JavaScript context (inside a * {@code