blob: 8eac8419462fe2c932fc76ce87f0f9aee2f9c6ad [file] [log] [blame]
package org.unicode.cldr.util;
import java.lang.annotation.Annotation;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.google.common.collect.ImmutableSet;
public enum DtdType {
ldml("common/dtd/ldml.dtd", null, null,
"main",
"annotations",
"annotationsDerived",
"casing",
"collation",
"rbnf",
"segments",
"subdivisions"),
ldmlICU("common/dtd/ldmlICU.dtd", ldml),
supplementalData("common/dtd/ldmlSupplemental.dtd", null, null,
"supplemental",
"transforms",
"validity"),
ldmlBCP47("common/dtd/ldmlBCP47.dtd", "1.7.2", null,
"bcp47"),
keyboard("keyboards/dtd/ldmlKeyboard.dtd", "22.1", null,
"../keyboards"),
platform("keyboards/dtd/ldmlPlatform.dtd", "22.1", null,
"../keyboards");
static Pattern FIRST_ELEMENT = PatternCache.get("//([^/\\[]*)");
public final String dtdPath;
public final DtdType rootType;
public final String firstVersion;
public final Set<String> directories;
private DtdType(String dtdPath) {
this(dtdPath,null,null);
}
private DtdType(String dtdPath, DtdType realType) {
this(dtdPath,null,realType);
}
private DtdType(String dtdPath, String firstVersion, DtdType realType, String... directories) {
this.dtdPath = dtdPath;
this.rootType = realType == null ? this : realType;
this.firstVersion = firstVersion;
this.directories = ImmutableSet.copyOf(directories);
}
public static DtdType fromPath(String elementOrPath) {
Matcher m = FIRST_ELEMENT.matcher(elementOrPath);
m.lookingAt();
return DtdType.valueOf(m.group(1));
}
public String header(Class<?> generatedBy) {
String gline = "";
if (generatedBy != null) {
gline = "\n\tGENERATED DATA — do not manually update!"
+ "\n\t\tGenerated by tool:\t" + generatedBy.getSimpleName() + "\n";
for (Annotation annotation : generatedBy.getAnnotations()) {
if(annotation instanceof CLDRTool){
gline += "\t\tTool documented on:\t" + ((CLDRTool) annotation).url() + "\n";
break;
}
}
}
return "<?xml version='1.0' encoding='UTF-8' ?>\n"
+ "<!DOCTYPE " + this + " SYSTEM '../../" + dtdPath + "'>\n" // "common/dtd/ldmlSupplemental.dtd"
+ "<!--\n"
+ "\t© 1991-2017 Unicode, Inc.\n"
+ "\tUnicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.\n"
+ "\tFor terms of use, see http://www.unicode.org/copyright.html.\n"
+ "\tCLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/).\n"
+ gline
+ " -->\n"
+ "<" + this + ">\n";
}
}