Skip to content
This repository has been archived by the owner on Sep 21, 2023. It is now read-only.

Commit

Permalink
Version/2.3.4 (epam-cross-platform-lab#304)
Browse files Browse the repository at this point in the history
* Fixed some issues

* Added fix for Field annotations. Updatec changelog and pubspec

* Fixed lot of issues with AllOf support

* Updated changelog and pubspec

* Added requestbodies generation from requests

* Add windows support (epam-cross-platform-lab#273)

* Run CI on windows too

* chore: Fix a number of path joins

* fix: Revert change to getFileNameWithoutExtension

* fix: Normalize paths used for extensions

* Fixed errors with requestBodies generation

* Added possibility to use operationId for request name

* Format code

* Updated pubspec and changelog

* Fix tests

* Fix analyser issues

* Updated example readme

* Removed converter generator

* Fix cases when refs are overriden

* Fixed enum generation
Changed int64 parsing to double

* Released 2.2.8

* Added support int64

* Updated changelog and pubspec

* Fix for models int64

* Updated changelog and pubspec

* Removed not needed file

* Fixed responses array of int

* Reverted analysis options

* Updated changelog

* Updated version

* Fixed tests

* Fixed analyser issues

* Fixed issue epam-cross-platform-lab#291

* updated changelog and pubcpec

* Added parsing of security for requests

* Fixed num parsing as Num

* Implemented security keys definition

* Removed not needed prints

* Updated changelog and pubspec

* Removed use_inheritance field

* Removed outdated tests

* Implemented integer enums support

* Updated changelog and pubspec

Co-authored-by: uladzimir_paliukhovich <>
Co-authored-by: Elliana May <me@mause.me>
  • Loading branch information
Vovanella95 and Mause authored Jan 11, 2022
1 parent 02e60c7 commit edf06b5
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 9 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# 2.3.4

* Fixed Issue ([#268](https://github.com/epam-cross-platform-lab/swagger-dart-code-generator/issues/268))
* Added support of integer enum values

# 2.3.3

* Fixed Issue ([#297](https://github.com/epam-cross-platform-lab/swagger-dart-code-generator/issues/297))
Expand Down
2 changes: 2 additions & 0 deletions lib/src/code_generators/constants.dart
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ const kInt64 = 'int64';
const kNum = 'num';
const kUndefinedParameter = 'undefinedParameter';

const kIntegerTypes = [kInteger, kInt64, kNum];

const kResponses = '/responses/';

//Request types
Expand Down
41 changes: 34 additions & 7 deletions lib/src/code_generators/swagger_enums_generator.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'dart:convert';
import 'package:recase/recase.dart';
import 'package:swagger_dart_code_generator/src/code_generators/constants.dart';
import 'package:swagger_dart_code_generator/src/code_generators/swagger_models_generator.dart';
import 'package:swagger_dart_code_generator/src/exception_words.dart';
import 'package:swagger_dart_code_generator/src/extensions/string_extension.dart';
Expand Down Expand Up @@ -182,8 +183,16 @@ $enumsFromRequestBodies
swaggerRequestParameter.items?.enumValues ??
[];

final isInteger =
kIntegerTypes.contains(swaggerRequestParameter.schema?.type) ||
kIntegerTypes.contains(swaggerRequestParameter.items?.type);

if (enumValues.isNotEmpty) {
final enumContent = generateEnumContent(name, enumValues);
final enumContent = generateEnumContent(
name,
enumValues,
isInteger,
);

result.writeln(enumContent);
enumNames.add(swaggerRequestParameter.name);
Expand All @@ -195,8 +204,15 @@ $enumsFromRequestBodies
return result.toString();
}

String generateEnumContent(String enumName, List<String> enumValues) {
final enumValuesContent = getEnumValuesContent(enumValues);
String generateEnumContent(
String enumName,
List<String> enumValues,
bool isInteger,
) {
final enumValuesContent = getEnumValuesContent(
enumValues: enumValues,
isInteger: isInteger,
);

final enumMap = '''
\n\tconst \$${enumName}Map = {
Expand All @@ -217,7 +233,10 @@ $enumMap
return result;
}

String getEnumValuesContent(List<String> enumValues) {
String getEnumValuesContent({
required List<String> enumValues,
required bool isInteger,
}) {
final result = <String>[];
final resultStrings = <String>[];

Expand All @@ -229,8 +248,14 @@ $enumMap
}

result.add(validatedValue);
resultStrings.add(
"\t@JsonValue('${value.replaceAll("\$", "\\\$")}')\n\t$validatedValue");

if (isInteger) {
resultStrings.add(
"\t@JsonValue(${value.replaceAll("\$", "\\\$")})\n\t$validatedValue");
} else {
resultStrings.add(
"\t@JsonValue('${value.replaceAll("\$", "\\\$")}')\n\t$validatedValue");
}
});

return resultStrings.join(',\n');
Expand Down Expand Up @@ -363,10 +388,12 @@ $enumMap
};
''';

final isInteger = kIntegerTypes.contains(map['type']);

return """
enum ${enumName.capitalize} {
\t@JsonValue('$defaultEnumValueName')\n $defaultEnumValueName,
${getEnumValuesContent(enumValues)}
${getEnumValuesContent(enumValues: enumValues, isInteger: isInteger)}
}
$enumMap
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: swagger_dart_code_generator

version: 2.3.3
version: 2.3.4

homepage: https://github.com/epam-cross-platform-lab/swagger-dart-code-generator
repository: https://github.com/epam-cross-platform-lab/swagger-dart-code-generator
Expand Down
3 changes: 2 additions & 1 deletion test/generator_tests/enums_generator_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ void main() {
test('Should generate enum values', () {
final values = <String>['file_sup'];
const output = "\t@JsonValue('file_sup')\n\tfileSup";
final result = generator.getEnumValuesContent(values);
final result =
generator.getEnumValuesContent(enumValues: values, isInteger: false);

expect(result, contains(output));
});
Expand Down

0 comments on commit edf06b5

Please sign in to comment.