Add resource identifier to generated code
diff --git a/pkgs/messages/example_json/lib/messages.g.dart b/pkgs/messages/example_json/lib/messages.g.dart index 1ebaa48..4d3a4f5 100644 --- a/pkgs/messages/example_json/lib/messages.g.dart +++ b/pkgs/messages/example_json/lib/messages.g.dart
@@ -4,6 +4,7 @@ import 'package:intl4x/intl4x.dart'; import 'package:messages/messages_json.dart'; +import 'package:meta/meta.dart'; class AboutPageMessages { AboutPageMessages(); @@ -48,24 +49,33 @@ } String aboutMessage(String websitename) => - _currentMessages.generateStringAtIndex(0, [websitename]); + generateStringAtIndex(0, [websitename]); String helloAndWelcome( String firstName, int lastName, ) => - _currentMessages.generateStringAtIndex(1, [firstName, lastName]); + generateStringAtIndex(1, [firstName, lastName]); String newMessages(int newMessages) => - _currentMessages.generateStringAtIndex(2, [newMessages]); + generateStringAtIndex(2, [newMessages]); String newMessages2( String gender, int newVar, ) => - _currentMessages.generateStringAtIndex(3, [gender, newVar]); + generateStringAtIndex(3, [gender, newVar]); - String get otherMsg => _currentMessages.generateStringAtIndex(4, []); + String get otherMsg => generateStringAtIndex(4, []); +} + +extension on AboutPageMessages { + @ResourceIdentifier('AboutPageMessages') + String generateStringAtIndex( + int index, + List args, + ) => + _currentMessages.generateStringAtIndex(index, args); } class HomePageMessages { @@ -114,22 +124,31 @@ String firstName, String lastName, ) => - _currentMessages.generateStringAtIndex(0, [firstName, lastName]); + generateStringAtIndex(0, [firstName, lastName]); String helloAndWelcome2( String firstName, String lastName, ) => - _currentMessages.generateStringAtIndex(1, [firstName, lastName]); + generateStringAtIndex(1, [firstName, lastName]); String newMessages(int newMessages) => - _currentMessages.generateStringAtIndex(2, [newMessages]); + generateStringAtIndex(2, [newMessages]); String newMessages2( String gender, int newVar, ) => - _currentMessages.generateStringAtIndex(3, [gender, newVar]); + generateStringAtIndex(3, [gender, newVar]); +} + +extension on HomePageMessages { + @ResourceIdentifier('HomePageMessages') + String generateStringAtIndex( + int index, + List args, + ) => + _currentMessages.generateStringAtIndex(index, args); } Message _pluralSelector(
diff --git a/pkgs/messages/example_json/pubspec.yaml b/pkgs/messages/example_json/pubspec.yaml index 5b5f489..5d141b8 100644 --- a/pkgs/messages/example_json/pubspec.yaml +++ b/pkgs/messages/example_json/pubspec.yaml
@@ -9,6 +9,7 @@ intl4x: path: ../../intl4x messages: ^0.2.0 + meta: ^1.15.0 native_assets_cli: ^0.6.0 dev_dependencies:
diff --git a/pkgs/messages/lib/src/message_format.dart b/pkgs/messages/lib/src/message_format.dart index a92949e..909d7a4 100644 --- a/pkgs/messages/lib/src/message_format.dart +++ b/pkgs/messages/lib/src/message_format.dart
@@ -2,8 +2,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:meta/meta.dart'; - // ignore_for_file: non_constant_identifier_names import 'plural_selector.dart'; @@ -34,19 +32,9 @@ Preamble get preamble; PluralSelector get pluralSelector; - String _generateStringAtIndex(int index, List args); + String generateStringAtIndex(int index, List args); - String _generateStringAtId(String id, List args); -} - -extension MessageListStatic on MessageList { - @ResourceIdentifier() - String generateStringAtIndex(int index, List args) => - _generateStringAtIndex(index, args); - - @ResourceIdentifier() - String generateStringAtId(String id, List args) => - _generateStringAtId(id, args); + String generateStringAtId(String id, List args); } sealed class PluralMarker {
diff --git a/pkgs/messages_builder/lib/code_generation/class_generation.dart b/pkgs/messages_builder/lib/code_generation/class_generation.dart index a55c689..6f651f4 100644 --- a/pkgs/messages_builder/lib/code_generation/class_generation.dart +++ b/pkgs/messages_builder/lib/code_generation/class_generation.dart
@@ -29,10 +29,11 @@ String getClassName(String? context) => '${context ?? ''}Messages'; List<Spec> generate() { + final className = getClassName(context); final classes = <Spec>[ Class( (cb) => cb - ..name = getClassName(context) + ..name = className ..constructors.addAll(constructors) ..fields.addAll(fields) ..methods.addAll(methods), @@ -49,6 +50,51 @@ ) : null).whereType<EnumValue>()))); } + classes.add(Extension((b) => b + ..on = Reference(className) + ..methods.addAll([ + if (options.findById) + Method( + (p0) => p0 + ..name = 'generateStringAtId' + ..requiredParameters.addAll([ + Parameter((p0) => p0 + ..name = 'id' + ..type = const Reference('String')), + Parameter((p0) => p0 + ..name = 'args' + ..type = const Reference('List')) + ]) + ..annotations + .add(CodeExpression(Code("ResourceIdentifier('$className')"))) + ..lambda = true + ..body = const Code(''' +_currentMessages.generateStringAtId(id, args) +''') + ..returns = const Reference('String'), + ), + //String generateStringAtIndex(int index, List args) + if (options.messageCalls || options.indexType == IndexType.enumerate) + Method( + (p0) => p0 + ..name = 'generateStringAtIndex' + ..requiredParameters.addAll([ + Parameter((p0) => p0 + ..name = 'index' + ..type = const Reference('int')), + Parameter((p0) => p0 + ..name = 'args' + ..type = const Reference('List')) + ]) + ..annotations + .add(CodeExpression(Code("ResourceIdentifier('$className')"))) + ..lambda = true + ..body = const Code(''' +_currentMessages.generateStringAtIndex(index, args) +''') + ..returns = const Reference('String'), + ) + ]))); return classes; } }
diff --git a/pkgs/messages_builder/lib/code_generation/import_generation.dart b/pkgs/messages_builder/lib/code_generation/import_generation.dart index b616b5c..04931c2 100644 --- a/pkgs/messages_builder/lib/code_generation/import_generation.dart +++ b/pkgs/messages_builder/lib/code_generation/import_generation.dart
@@ -27,6 +27,10 @@ return [ ...serializationImports, ...pluralImports, + if (options.findById || + options.messageCalls || + options.indexType == IndexType.enumerate) + Directive.import('package:meta/meta.dart'), Directive.import('dart:ffi'), ]; }
diff --git a/pkgs/messages_builder/lib/code_generation/method_generation.dart b/pkgs/messages_builder/lib/code_generation/method_generation.dart index be6f589..b146b0b 100644 --- a/pkgs/messages_builder/lib/code_generation/method_generation.dart +++ b/pkgs/messages_builder/lib/code_generation/method_generation.dart
@@ -25,8 +25,7 @@ final indexStr = options.indexType == IndexType.enumerate ? '${enumName(context)}.${message.name}.index' : index.toString(); - final body = - '_currentMessages.generateStringAtIndex($indexStr, [$arguments])'; + final body = 'generateStringAtIndex($indexStr, [$arguments])'; final methodType = message.placeholders.isEmpty ? MethodType.getter : null; return Method( (mb) => mb @@ -143,8 +142,7 @@ ..type = const Reference('List<dynamic>') ..defaultTo = const Code('const []'), )) - ..body = - const Code('return _currentMessages.generateStringAtId(id, args);') + ..body = const Code('return generateStringAtId(id, args);') ..returns = const Reference('String')); final findByEnum = Method((mb) => mb ..name = 'getByEnum' @@ -161,8 +159,7 @@ ..type = const Reference('List<dynamic>') ..defaultTo = const Code('const []'), )) - ..body = - const Code('_currentMessages.generateStringAtIndex(val.index, args)') + ..body = const Code('generateStringAtIndex(val.index, args)') ..lambda = true ..returns = const Reference('String'));