/*
* Copyright 2009 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.template.soy.parseinfo;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
/**
* Parsed info about a Soy file.
*
*/
public class SoyFileInfo {
/**
* Enum for whether there are prefix expressions in the 'css' tags that a CSS name appears in.
* Note that it's possible for the same CSS name to appear in multiple 'css' tags, some of which
* contain prefixes and some of which don't.
*/
public static enum CssTagsPrefixPresence {
ALWAYS,
NEVER,
SOMETIMES;
}
/** The source Soy file's name. */
private final String fileName;
/** The Soy file's namespace. */
private final String namespace;
/** List of public basic templates in this Soy file. */
private final ImmutableList<SoyTemplateInfo> templates;
/**
* List of all deltemplate names in the Soy file.
*
* <p>These are the mangled names.
*/
private final ImmutableList<String> deltemplateNames;
/** Map from each CSS name appearing in this file to its CssTagsPrefixPresence state. */
private final ImmutableMap<String, CssTagsPrefixPresence> cssNameMap;
/**
* Constructor for internal use only.
*
* <p>Important: Do not construct SoyFileInfo objects outside of Soy internal or Soy-generated
* code. User code that constructs SoyFileInfo objects will be broken by future Soy changes.
*
* @param fileName The source Soy file's name.
* @param namespace The Soy file's namespace.
* @param templates List of templates in this Soy file.
*/
public SoyFileInfo(
String fileName,
String namespace,
ImmutableList<SoyTemplateInfo> templates,
ImmutableMap<String, CssTagsPrefixPresence> cssNameMap,
ImmutableList<String> deltemplateNames) {
this.fileName = fileName;
this.namespace = namespace;
this.templates = templates;
this.cssNameMap = cssNameMap;
this.deltemplateNames = deltemplateNames;
}
/** Returns the source Soy file's name. */
public final String getFileName() {
return fileName;
}
/** Returns the Soy file's namespace. */
public final String getNamespace() {
return namespace;
}
/** Returns the list of templates in this Soy file. */
public final ImmutableList<SoyTemplateInfo> getTemplates() {
return templates;
}
/** Returns a map from each CSS name appearing in this file to its CssTagsPrefixPresence state. */
public final ImmutableMap<String, CssTagsPrefixPresence> getCssNames() {
return cssNameMap;
}
/**
* Returns a list of any protocol buffer types used by the templates. The elements of the list are
* the default object for a given proto type.
*/
public ImmutableList<Object> getProtoTypes() {
return ImmutableList.of();
}
/** Returns the fully qualified names of all deltemplates in the file. */
public final ImmutableList<String> getDelTemplateNames() {
return deltemplateNames;
}
}