From e88219da70abeec37a6c1b34f9263b95fc0f7265 Mon Sep 17 00:00:00 2001 From: thomashii Date: Sat, 11 Sep 2021 14:37:53 +0800 Subject: [PATCH] Updated serialize_generator --- packages/serialize/.gitignore | 23 ---------- .../angel_serialize_generator/CHANGELOG.md | 6 +++ .../angel_serialize_generator/LICENSE | 42 +++++++++++-------- .../angel_serialize_generator/README.md | 4 +- .../analysis_options.yaml | 9 +--- .../angel_serialize_generator/build.yaml | 2 +- .../lib/serialize.dart | 27 ++++++++---- .../angel_serialize_generator/pubspec.yaml | 4 +- 8 files changed, 56 insertions(+), 61 deletions(-) delete mode 100644 packages/serialize/.gitignore diff --git a/packages/serialize/.gitignore b/packages/serialize/.gitignore deleted file mode 100644 index ae3d0ab0..00000000 --- a/packages/serialize/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -# Created by .ignore support plugin (hsz.mobi) -.idea/**/workspace.xml -.idea/**/tasks.xml -.idea/dictionaries -.idea/**/dataSources/ -.idea/**/dataSources.ids -.idea/**/dataSources.xml -.idea/**/dataSources.local.xml -.idea/**/sqlDataSources.xml -.idea/**/dynamic.xml -.idea/**/uiDesigner.xml -.idea/**/gradle.xml -.idea/**/libraries -.idea/**/mongoSettings.xml -*.iws -/out/ -.idea_modules/ -atlassian-ide-plugin.xml -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties -.dart_tool \ No newline at end of file diff --git a/packages/serialize/angel_serialize_generator/CHANGELOG.md b/packages/serialize/angel_serialize_generator/CHANGELOG.md index 023606f5..f23030fc 100644 --- a/packages/serialize/angel_serialize_generator/CHANGELOG.md +++ b/packages/serialize/angel_serialize_generator/CHANGELOG.md @@ -1,5 +1,11 @@ # Change Log +## 4.2.0 + +* Fixed `toMap` method generation for non nullable Map +* Fixed `fromMap` method generation for non nullable Map +* Upgraded from `pendantic` to `lints` linter + ## 4.1.2 * Fixed `toMap` method generation diff --git a/packages/serialize/angel_serialize_generator/LICENSE b/packages/serialize/angel_serialize_generator/LICENSE index 8f65b579..df5e0635 100644 --- a/packages/serialize/angel_serialize_generator/LICENSE +++ b/packages/serialize/angel_serialize_generator/LICENSE @@ -1,21 +1,29 @@ -MIT License (MIT) +BSD 3-Clause License -Copyright (c) 2021 dukefirehawk.com +Copyright (c) 2021, dukefirehawk.com +All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/serialize/angel_serialize_generator/README.md b/packages/serialize/angel_serialize_generator/README.md index d3987cc4..03303f1a 100644 --- a/packages/serialize/angel_serialize_generator/README.md +++ b/packages/serialize/angel_serialize_generator/README.md @@ -1,6 +1,6 @@ # Angel3 Serialize Generator -[![version](https://img.shields.io/badge/pub-v4.1.2-brightgreen)](https://pub.dartlang.org/packages/angel3_serialize_generator) +[![version](https://img.shields.io/badge/pub-v4.2.0-brightgreen)](https://pub.dartlang.org/packages/angel3_serialize_generator) [![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety) [![Gitter](https://img.shields.io/gitter/room/angel_dart/discussion)](https://gitter.im/angel_dart/discussion) @@ -8,4 +8,4 @@ The builder for Angel3 model serialization. -Find documentation in the main project repo: +Find documentation in the main [serialize project repo](https://github.com/dukefirehawk/angel/tree/master/packages/serialize) diff --git a/packages/serialize/angel_serialize_generator/analysis_options.yaml b/packages/serialize/angel_serialize_generator/analysis_options.yaml index dd372bfa..ea2c9e94 100644 --- a/packages/serialize/angel_serialize_generator/analysis_options.yaml +++ b/packages/serialize/angel_serialize_generator/analysis_options.yaml @@ -1,8 +1 @@ -include: package:pedantic/analysis_options.yaml -analyzer: - strong-mode: - implicit-casts: false -linter: - rules: - - unnecessary_new - - unnecessary_const \ No newline at end of file +include: package:lints/recommended.yaml \ No newline at end of file diff --git a/packages/serialize/angel_serialize_generator/build.yaml b/packages/serialize/angel_serialize_generator/build.yaml index d15efe53..6648010b 100644 --- a/packages/serialize/angel_serialize_generator/build.yaml +++ b/packages/serialize/angel_serialize_generator/build.yaml @@ -31,7 +31,7 @@ builders: # - "test/models/with_enum.dart" # $default: # dependencies: -# - "angel_serialize_generator:_book" +# - "angel3_serialize_generator:_book" # sources: # - "test/models/author.dart" # - "test/models/game_pad.dart" diff --git a/packages/serialize/angel_serialize_generator/lib/serialize.dart b/packages/serialize/angel_serialize_generator/lib/serialize.dart index 60e89182..0e3b589f 100644 --- a/packages/serialize/angel_serialize_generator/lib/serialize.dart +++ b/packages/serialize/angel_serialize_generator/lib/serialize.dart @@ -180,8 +180,7 @@ class ${pascal}Decoder extends Converter { // Serialize model classes via `XSerializer.toMap` else if (isModelClass(type)) { var rc = ReCase(type.getDisplayString(withNullability: true)); - serializedRepresentation = - '${serializerToMap(rc, 'model.${field.name}')}'; + serializedRepresentation = serializerToMap(rc, 'model.${field.name}'); } else if (type is InterfaceType) { if (isListOfModelType(type)) { var name = @@ -201,8 +200,8 @@ class ${pascal}Decoder extends Converter { var rc = ReCase( type.typeArguments[1].getDisplayString(withNullability: true)); serializedRepresentation = - '''model.${field.name}.keys?.fold({}, (map, key) { - return map..[key] = + '''model.${field.name}.keys.fold({}, (map, key) { + return (map as Map?)?..[key] = ${serializerToMap(rc, 'model.${field.name}[key]')}; })'''; } else if (type.element.isEnum) { @@ -270,11 +269,19 @@ class ${pascal}Decoder extends Converter { ctx.requiredFields.forEach((key, msg) { if (ctx.excluded[key]?.canDeserialize == false) return; var name = ctx.resolveFieldName(key); - buf.writeln(''' - if (map['$name'] == null) { - throw FormatException("$msg"); + if (msg.contains("'")) { + buf.writeln(''' + if (map['$name'] == null) { + throw FormatException("$msg"); + } + '''); + } else { + buf.writeln(''' + if (map['$name'] == null) { + throw FormatException('$msg'); + } + '''); } - '''); }); buf.writeln('return ${ctx.modelClassName}('); @@ -348,6 +355,10 @@ class ${pascal}Decoder extends Converter { ' : $defaultValue'; } else if (isMapToModelType(type)) { // TODO: This requires refractoring + if (defaultValue == 'null') { + defaultValue = '{}'; + } + var rc = ReCase( type.typeArguments[1].getDisplayString(withNullability: true)); deserializedRepresentation = ''' diff --git a/packages/serialize/angel_serialize_generator/pubspec.yaml b/packages/serialize/angel_serialize_generator/pubspec.yaml index 53322ff7..afda443b 100644 --- a/packages/serialize/angel_serialize_generator/pubspec.yaml +++ b/packages/serialize/angel_serialize_generator/pubspec.yaml @@ -1,5 +1,5 @@ name: angel3_serialize_generator -version: 4.1.2 +version: 4.2.0 description: Angel3 model serialization generators, designed for use with Angel. Combine with angel_serialize for flexible modeling. homepage: https://angel3-framework.web.app/ repository: https://github.com/dukefirehawk/angel/tree/angel3/packages/serialize/angel_serialize_generator @@ -22,5 +22,5 @@ dependencies: dev_dependencies: build_runner: ^2.0.1 collection: ^1.15.0 - pedantic: ^1.11.0 + lints: ^1.0.0 test: ^1.17.4