IncludedTemplatePart.java

package org.klojang.templates;

import static org.klojang.util.StringMethods.substrAfter;
import static org.klojang.util.StringMethods.substringBefore;

/**
 * A {@link Part} implementation for representing included templates.
 *
 * @author Ayco Holleman
 */
final class IncludedTemplatePart extends NestedTemplatePart {

  static String basename(String path) {
    return substringBefore(substrAfter(path, "/", -1), ".", -1);
  }

  private final boolean tagOnSeparateLine;

  IncludedTemplatePart(int start, Template template, boolean tagOnSeparateLine) {
    super(start, template);
    this.tagOnSeparateLine = tagOnSeparateLine;
  }

  @Override
  public String toString() {
    String basename = basename(template.path().get().toString());
    StringBuilder sb = new StringBuilder(32).append("~%%include:");
    if (!template.getName().equals(basename)) {
      sb.append(template.getName()).append(':');
    }
    return sb.append(template.path().get()).append("%%").toString();
  }

  boolean isTagOnSeparateLine() {
    return tagOnSeparateLine;
  }

}