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:
https://github.com/vojtechhabarta/typescript-generator/issues/299const Fruit = { BANANA: {colour: "yellow"}, ORANGE: {colour: "orange"} }; interface Coloured { colour: string; } interface ColouredUsage { colouredThing: Coloured; } const colouredUsage: ColouredUsage = { colouredThing: Fruit.BANANA }
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
static class
Nested classes/interfaces inherited from class cz.habarta.typescript.generator.Extension
cz.habarta.typescript.generator.Extension.TransformerDefinition
Nested classes/interfaces inherited from class cz.habarta.typescript.generator.emitter.EmitterExtension
cz.habarta.typescript.generator.emitter.EmitterExtension.Writer
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
static final String
protected boolean
protected com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector
protected List
<cz.habarta.typescript.generator.emitter.TsEnumModel> static final Predicate
<cz.habarta.typescript.generator.Settings> static final String
static final String
static final String
static final String
static final String
static final String
static final String
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
emitElements
(cz.habarta.typescript.generator.emitter.EmitterExtension.Writer writer, cz.habarta.typescript.generator.Settings settings, boolean exportKeyword, cz.habarta.typescript.generator.emitter.TsModel model) protected boolean
enumInterfacesMatch
(Type[] interfaces) protected boolean
enumMatches
(String enumName) protected boolean
enumOrInterfacesMatch
(cz.habarta.typescript.generator.emitter.TsEnumModel tsEnumModel) cz.habarta.typescript.generator.emitter.EmitterExtensionFeatures
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 valueList
<cz.habarta.typescript.generator.Extension.TransformerDefinition> 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;void
setConfiguration
(Map<String, String> configuration) static void
Topological sort based on https://rosettacode.org/wiki/Topological_sort#Java
-
Field Details
-
CFG_ENUM_PATTERN
- See Also:
-
CFG_ENUM_INTERFACE_PATTERN
- See Also:
-
TMPL_ENUM_NAME
- See Also:
-
TMPL_ENUM_IMPLEMENTS
- See Also:
-
TMPL_ENUM_MEMBER_NAME
- See Also:
-
TMPL_ENUM_MEMBER_FIELD_VALUES
- See Also:
-
TMPL_ENUM_FIELDS
- See Also:
-
TMPL_ENUM_FIELD_SEPARATOR
- See Also:
-
TMPL_ENUM_MEMBER_VALUE_SEPARATOR
- See Also:
-
ENUM_CLASS_HEADER_TEMPLATE
-
ENUM_CLASS_MEMBER_TEMPLATE
-
ENUM_CLASS_FOOTER_TEMPLATE
-
enumPatterns
-
enumInterfacePatterns
-
matchedEnums
-
hasNoConfig
protected boolean hasNoConfig -
supportsNullValuesPredicate
-
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 classcz.habarta.typescript.generator.emitter.EmitterExtension
-
setConfiguration
- Overrides:
setConfiguration
in classcz.habarta.typescript.generator.Extension
- Throws:
RuntimeException
-
getTransformers
- Overrides:
getTransformers
in classcz.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 classcz.habarta.typescript.generator.emitter.EmitterExtension
-
enumOrInterfacesMatch
protected boolean enumOrInterfacesMatch(cz.habarta.typescript.generator.emitter.TsEnumModel tsEnumModel) -
enumMatches
-
enumInterfacesMatch
-
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
Topological sort based on https://rosettacode.org/wiki/Topological_sort#Java
-