package cz.habarta.typescript.generator.ext;
import cz.habarta.typescript.generator.Settings;
import cz.habarta.typescript.generator.compiler.EnumKind;
import cz.habarta.typescript.generator.compiler.EnumMemberModel;
import cz.habarta.typescript.generator.emitter.EmitterExtension;
import cz.habarta.typescript.generator.emitter.EmitterExtensionFeatures;
import cz.habarta.typescript.generator.emitter.TsEnumModel;
import cz.habarta.typescript.generator.emitter.TsModel;
import java.util.Collections;
import java.util.List;
public class NonConstEnumsExtension extends EmitterExtension {
@Override
public EmitterExtensionFeatures getFeatures() {
final EmitterExtensionFeatures features = new EmitterExtensionFeatures();
features.generatesRuntimeCode = true;
features.overridesStringEnums = true;
return features;
}
@Override
public void emitElements(Writer writer, Settings settings, boolean exportKeyword, TsModel model) {
String exportString = exportKeyword ? "export " : "";
List<TsEnumModel<String>> enums = model.getEnums(EnumKind.StringBased);
Collections.sort(enums);
for (TsEnumModel<String> tsEnum : enums) {
writer.writeIndentedLine("");
writer.writeIndentedLine(exportString + "enum " + tsEnum.getName().getSimpleName() + " {");
for (EnumMemberModel<String> member : tsEnum.getMembers()) {
writer.writeIndentedLine(settings.indentString + member.getPropertyName() + ",");
}
writer.writeIndentedLine("}");
}
}
}