/**
* @author Eugene.Kudelevsky
*/
- class TemplateToken extends Token {
- final String myKey;
- final List<Pair<String, String>> myAttribute2Value;
- TemplateImpl myTemplate;
+ public class TemplateToken extends Token {
+ private final String myKey;
+ private final List<Pair<String, String>> myAttribute2Value;
+ private TemplateImpl myTemplate;
+ public XmlTag myTag;
- TemplateToken(String key, List<Pair<String, String>> attribute2value) {
+ public TemplateToken(String key, List<Pair<String, String>> attribute2value) {
myKey = key;
myAttribute2Value = attribute2value;
}
private static void invokeTemplate(TemplateToken token,
final CustomTemplateCallback callback,
int numberInIteration) {
- List<Pair<String, String>> attr2value = new ArrayList<Pair<String, String>>(token.myAttribute2Value);
- if (token.myTemplate != null) {
+ List<Pair<String, String>> attr2value = new ArrayList<Pair<String, String>>(token.getAttribute2Value());
- if (callback.isLiveTemplateApplicable(token.getKey())) {
- invokeExistingLiveTemplate(token, callback, numberInIteration, attr2value);
- }
- else {
- TemplateImpl template = new TemplateImpl("", "");
- template.addTextSegment('<' + token.getKey());
- if (attr2value.size() > 0) {
- template.addVariable(ATTRS, "", "", false);
- template.addVariableSegment(ATTRS);
- }
- template.addTextSegment(">");
- if (XmlZenCodingTemplate.isTrueXml(callback) || !HtmlUtil.isSingleHtmlTag(token.getKey())) {
- template.addVariableSegment(TemplateImpl.END);
- template.addTextSegment("</" + token.getKey() + ">");
- }
- template.setToReformat(true);
- Map<String, String> predefinedValues = buildPredefinedValues(attr2value, numberInIteration);
- callback.expandTemplate(template, predefinedValues);
- }
- }
-
- private static void invokeExistingLiveTemplate(TemplateToken token,
- CustomTemplateCallback callback,
- int numberInIteration,
- List<Pair<String, String>> attr2value) {
+ if (token.getTemplate() != null) {
if (attr2value.size() > 0 || XmlZenCodingTemplate.isTrueXml(callback)) {
- TemplateImpl modifiedTemplate = token.myTemplate.copy();
+ TemplateImpl modifiedTemplate = token.getTemplate().copy();
- XmlTag tag = XmlZenCodingTemplate.parseXmlTagInTemplate(token.getTemplate().getString(), callback, true);
+ XmlTag tag = token.myTag;
if (tag != null) {
for (Iterator<Pair<String, String>> iterator = attr2value.iterator(); iterator.hasNext();) {
Pair<String, String> pair = iterator.next();
return;
}
}
- callback.expandTemplate(token.myTemplate, null);
+ callback.expandTemplate(token.getTemplate(), null);
}
else {
+ // for CSS
Map<String, String> predefinedValues = buildPredefinedValues(attr2value, numberInIteration);
- callback.expandTemplate(token.myKey, predefinedValues);
+ callback.expandTemplate(token.getKey(), predefinedValues);
}
}
if (token == null) {
return null;
}
- if (useDefaultTag && token.myAttribute2Value.size() == 0) {
+ if (useDefaultTag && token.getAttribute2Value().size() == 0) {
return null;
}
- if (template != null && (token.getAttribute2Value().size() > 0 || isTrueXml(callback))) {
- assert prefix.equals(token.getKey());
- token.setTemplate(template);
- if (token.getAttribute2Value().size() > 0) {
- XmlTag tag = parseXmlTagInTemplate(template.getString(), callback, false);
- if (tag == null) {
- return null;
- }
+ if (template == null) {
- template = generateTagTemplate(token.myKey, callback);
++ template = generateTagTemplate(token.getKey(), callback);
+ }
- assert prefix.equals(token.myKey);
- token.myTemplate = template;
++ assert prefix.equals(token.getKey());
++ token.setTemplate(template);
+ XmlTag tag = parseXmlTagInTemplate(template.getString(), callback, true);
- if (token.myAttribute2Value.size() > 0 && tag == null) {
++ if (token.getAttribute2Value().size() > 0 && tag == null) {
+ return null;
+ }
+ if (tag != null) {
- if (!XmlZenCodingInterpreter.containsAttrsVar(template) && token.myAttribute2Value.size() > 0) {
- addMissingAttributes(tag, token.myAttribute2Value);
++ if (!XmlZenCodingInterpreter.containsAttrsVar(template) && token.getAttribute2Value().size() > 0) {
++ addMissingAttributes(tag, token.getAttribute2Value());
}
+ token.myTag = tag;
}
return token;
}