Class EnumWithInterfacesExtension

java.lang.Object
cz.habarta.typescript.generator.emitter.EmitterExtension
cz.habarta.typescript.generator.Extension
EnumWithInterfacesExtension

public class EnumWithInterfacesExtension extends cz.habarta.typescript.generator.Extension
This extension exports enums that implement an interface as an object whose keys are the enum names and whose value is the enum value as an instance of the interface that the enum implements (only supports a single interface at the moment).

 public interface Coloured {
    String getColour();
 }

 public enum Fruit implements Coloured {
    BANANA("yellow"),
    ORANGE("orange");

    public String getColour();
 }

 public interface ColouredUsage {
    Coloured getColouredThing();
 }
 
 

This would transpile to:


 const Fruit = {
     BANANA: {colour: "yellow"},
     ORANGE: {colour: "orange"}
 };

 interface Coloured {
    colour: string;
 }

 interface ColouredUsage {
    colouredThing: Coloured;
 }

 const colouredUsage: ColouredUsage = {
    colouredThing: Fruit.BANANA
 }
 
 
https://github.com/vojtechhabarta/typescript-generator/issues/299
  • Field Details

    • CFG_ENUM_PATTERN

      public static final String CFG_ENUM_PATTERN
      See Also:
    • CFG_ENUM_INTERFACE_PATTERN

      public static final String CFG_ENUM_INTERFACE_PATTERN
      See Also:
    • TMPL_ENUM_NAME

      public static final String TMPL_ENUM_NAME
      See Also:
    • TMPL_ENUM_IMPLEMENTS

      public static final String TMPL_ENUM_IMPLEMENTS
      See Also:
    • TMPL_ENUM_MEMBER_NAME

      public static final String TMPL_ENUM_MEMBER_NAME
      See Also:
    • TMPL_ENUM_MEMBER_FIELD_VALUES

      public static final String TMPL_ENUM_MEMBER_FIELD_VALUES
      See Also:
    • TMPL_ENUM_FIELDS

      public static final String TMPL_ENUM_FIELDS
      See Also:
    • TMPL_ENUM_FIELD_SEPARATOR

      public static final String TMPL_ENUM_FIELD_SEPARATOR
      See Also:
    • TMPL_ENUM_MEMBER_VALUE_SEPARATOR

      public static final String TMPL_ENUM_MEMBER_VALUE_SEPARATOR
      See Also:
    • ENUM_CLASS_HEADER_TEMPLATE

      protected static final List<String> ENUM_CLASS_HEADER_TEMPLATE
    • ENUM_CLASS_MEMBER_TEMPLATE

      protected static final List<String> ENUM_CLASS_MEMBER_TEMPLATE
    • enumPatterns

      protected List<Pattern> enumPatterns
    • enumInterfacePatterns

      protected List<Pattern> enumInterfacePatterns
    • matchedEnums

      protected List<cz.habarta.typescript.generator.emitter.TsEnumModel> matchedEnums
    • hasNoConfig

      protected boolean hasNoConfig
    • supportsNullValuesPredicate

      public static final Predicate<cz.habarta.typescript.generator.Settings> supportsNullValuesPredicate
    • interfaceFieldPredicate

      public static final Predicate<Field> interfaceFieldPredicate
    • ignoreJsonFormatIntrospector

      protected com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector ignoreJsonFormatIntrospector
  • Constructor Details

    • EnumWithInterfacesExtension

      public EnumWithInterfacesExtension()
  • Method Details

    • getFeatures

      public cz.habarta.typescript.generator.emitter.EmitterExtensionFeatures getFeatures()
      Specified by:
      getFeatures in class cz.habarta.typescript.generator.emitter.EmitterExtension
    • setConfiguration

      public void setConfiguration(Map<String,String> configuration) throws RuntimeException
      Overrides:
      setConfiguration in class cz.habarta.typescript.generator.Extension
      Throws:
      RuntimeException
    • getTransformers

      public List<cz.habarta.typescript.generator.Extension.TransformerDefinition> getTransformers()
      Overrides:
      getTransformers in class cz.habarta.typescript.generator.Extension
    • emitElements

      public void emitElements(cz.habarta.typescript.generator.emitter.EmitterExtension.Writer writer, cz.habarta.typescript.generator.Settings settings, boolean exportKeyword, cz.habarta.typescript.generator.emitter.TsModel model)
      Overrides:
      emitElements in class cz.habarta.typescript.generator.emitter.EmitterExtension
    • enumOrInterfacesMatch

      protected boolean enumOrInterfacesMatch(cz.habarta.typescript.generator.emitter.TsEnumModel tsEnumModel)
    • enumMatches

      protected boolean enumMatches(String enumName)
    • enumInterfacesMatch

      protected boolean enumInterfacesMatch(Type[] interfaces)
    • getMemberValue

      protected String getMemberValue(String enumName, String memberName, Object value, cz.habarta.typescript.generator.Settings settings, com.fasterxml.jackson.databind.ObjectMapper objectMapper)
      returns the string representation of an enum's member value
    • parseEnum

      protected EnumWithInterfacesExtension.EnumInterfaceModel parseEnum(cz.habarta.typescript.generator.emitter.TsEnumModel enm, cz.habarta.typescript.generator.emitter.TsModel model, cz.habarta.typescript.generator.Settings settings)
      This method builds up a model that can be used to populate the enum class template;
    • sortEnums

      public static void sortEnums(List<cz.habarta.typescript.generator.emitter.TsEnumModel> enumModels)
      Topological sort based on https://rosettacode.org/wiki/Topological_sort#Java