asEnumShape property

EnumShape? get asEnumShape

Implementation

EnumShape? get asEnumShape {
  final enumTrait = getTrait<EnumTrait>();
  if (enumTrait == null) {
    return null;
  }
  return StringEnumShape((b) {
    b
      ..shapeId = shapeId
      ..members = NamedMembersMap({})
      ..traits = (traits..remove(EnumTrait.id));
    for (final definition in enumTrait.definitions) {
      final memberName = definition.name ?? definition.value;
      final deprecated = definition.deprecated ?? false;
      final docs = definition.documentation;
      final tags = definition.tags;
      b.members![memberName] = MemberShape(
        (b) => b
          ..target = Shape.unit
          ..memberName = memberName
          ..shapeId = shapeId.replace(member: memberName)
          ..traits = TraitMap.fromTraits([
            if (deprecated) const DeprecatedTrait(),
            if (docs != null) DocumentationTrait(docs),
            if (tags.isNotEmpty) TagsTrait(tags),
            EnumValueTrait(definition.value),
          ]),
      );
    }
  });
}