diff --git a/pkgs/messages/lib/src/deserializer/deserializer_json.dart b/pkgs/messages/lib/src/deserializer/deserializer_json.dart index 98a56edf..0f059a3e 100644 --- a/pkgs/messages/lib/src/deserializer/deserializer_json.dart +++ b/pkgs/messages/lib/src/deserializer/deserializer_json.dart @@ -42,23 +42,15 @@ class JsonDeserializer extends Deserializer { Message getMessage(dynamic message, [bool isTopLevel = false]) { if (message is List) { - final typeOrId = message[0]; - int start; - String? id; - if (isTopLevel && preamble.hasIds) { - start = 2; - id = message[1] as String; - } else { - start = 1; - } - if (typeOrId == PluralMessage.type) { - return _forPlural(message, start, id); - } else if (typeOrId == SelectMessage.type) { - return _forSelect(message, start, id); - } else if (typeOrId == CombinedMessage.type) { - return _forCombined(message, start, id); - } else if (typeOrId is String) { - return _forString(message, start - 1, typeOrId); + final type = message[0]; + if (type == PluralMessage.type) { + return _forPlural(message); + } else if (type == SelectMessage.type) { + return _forSelect(message); + } else if (type == CombinedMessage.type) { + return _forCombined(message); + } else if (type is String) { + return _forString(message); } } else if (message is String) { return StringMessage(message); @@ -66,26 +58,26 @@ class JsonDeserializer extends Deserializer { throw ArgumentError(); } - StringMessage _forString(List message, int start, String? id) { - final value = message[start] as String; + StringMessage _forString(List message) { + final value = message[0] as String; final argPositions = <({int stringIndex, int argIndex})>[]; - for (var i = start + 1; i < message.length; i++) { + for (var i = 1; i < message.length; i++) { final pair = message[i] as List; final stringIndex = pair[0]; final argIndex = pair[1]; argPositions.add((stringIndex: stringIndex, argIndex: argIndex)); } - return StringMessage(value, argPositions: argPositions, id: id); + return StringMessage(value, argPositions: argPositions); } - PluralMessage _forPlural(List message, int start, String? id) { - final argIndex = message[start] as int; - final otherMessage = getMessage(message[start + 1]); + PluralMessage _forPlural(List message) { + final argIndex = message[1] as int; + final otherMessage = getMessage(message[2]); Message? fewMessage; Message? manyMessage; final numberCases = {}; final wordCases = {}; - final submessages = message[start + 2] as List; + final submessages = message[3] as List; for (var i = 0; i < submessages.length - 1; i += 2) { final msg = getMessage(submessages[i + 1]); final messageMarker = submessages[i]; @@ -108,25 +100,20 @@ class JsonDeserializer extends Deserializer { many: manyMessage, argIndex: argIndex, other: otherMessage, - id: id, ); } - SelectMessage _forSelect(List message, int start, String? id) { - final argIndex = message[start] as int; - final otherCase = getMessage(message[start + 1]); - final submessages = message[start + 2] as Map; + SelectMessage _forSelect(List message) { + final argIndex = message[1] as int; + final otherCase = getMessage(message[2]); + final submessages = message[3] as Map; final cases = submessages.map((caseName, caseMessage) => MapEntry( caseName as String, getMessage(caseMessage), )); - return SelectMessage(otherCase, cases, argIndex, id); + return SelectMessage(otherCase, cases, argIndex); } - CombinedMessage _forCombined(List message, int start, String? id) { - return CombinedMessage( - id, - message.skip(start).map(getMessage).toList(), - ); - } + CombinedMessage _forCombined(List message) => + CombinedMessage(message.skip(1).map(getMessage).toList()); } diff --git a/pkgs/messages/lib/src/message.dart b/pkgs/messages/lib/src/message.dart index 7890bea2..b37c375a 100644 --- a/pkgs/messages/lib/src/message.dart +++ b/pkgs/messages/lib/src/message.dart @@ -5,9 +5,7 @@ import 'plural_selector.dart'; sealed class Message { - final String? id; - - Message(this.id); + Message(); String generateString( List allArgs, { @@ -20,7 +18,7 @@ sealed class Message { final class CombinedMessage extends Message { final List messages; - CombinedMessage(super.id, this.messages); + CombinedMessage(this.messages); @override String generateString( @@ -49,8 +47,7 @@ final class StringMessage extends Message { /// This list is expected to be sorted by `argPositions.stringIndex` final List<({int stringIndex, int argIndex})> argPositions; - StringMessage(this.value, {this.argPositions = const [], String? id}) - : super(id); + StringMessage(this.value, {this.argPositions = const [], String? id}); static const int type = 1; @@ -97,7 +94,7 @@ final class PluralMessage extends Message { required this.other, required this.argIndex, String? id, - }) : super(id); + }); static const int type = 3; @@ -125,12 +122,12 @@ final class SelectMessage extends Message { final Message other; final Map cases; final int argIndex; + SelectMessage( this.other, this.cases, - this.argIndex, [ - super.id, - ]); + this.argIndex, + ); static const int type = 4; diff --git a/pkgs/messages/lib/src/message_format.dart b/pkgs/messages/lib/src/message_format.dart index 909d7a42..2f763ec4 100644 --- a/pkgs/messages/lib/src/message_format.dart +++ b/pkgs/messages/lib/src/message_format.dart @@ -23,9 +23,7 @@ abstract class Preamble { String get hash; - bool get hasIds; - - static int length = 4; + static int length = 3; } abstract class MessageList { @@ -33,8 +31,6 @@ abstract class MessageList { PluralSelector get pluralSelector; String generateStringAtIndex(int index, List args); - - String generateStringAtId(String id, List args); } sealed class PluralMarker { diff --git a/pkgs/messages/lib/src/message_list_json.dart b/pkgs/messages/lib/src/message_list_json.dart index 998ad831..a1e49ac2 100644 --- a/pkgs/messages/lib/src/message_list_json.dart +++ b/pkgs/messages/lib/src/message_list_json.dart @@ -13,12 +13,10 @@ class JsonPreamble extends Preamble { required int serializationVersion, required String locale, required String hash, - required bool hasIds, }) : _data = [ serializationVersion, locale, hash, - hasIds ? 1 : 0, ]; JsonPreamble.parse(this._data); @@ -33,9 +31,6 @@ class JsonPreamble extends Preamble { @override String get hash => _data[2] as String; - - @override - bool get hasIds => _data[3] == 1; } class MessageListJson extends MessageList { @@ -60,12 +55,6 @@ class MessageListJson extends MessageList { factory MessageListJson.fromString(String string, PluralSelector intl) => JsonDeserializer(string).deserialize(intl); - @override - String generateStringAtId(String id, List args) => messages - .where((element) => element.id == id) - .first - .generateString(args, locale: preamble.locale, pluralSelector: _selector); - @override String generateStringAtIndex(int index, List args) => messages[getIndex(index)].generateString(args, diff --git a/pkgs/messages/test/messagelist_json_test.dart b/pkgs/messages/test/messagelist_json_test.dart index d5d8023e..2f1fd831 100644 --- a/pkgs/messages/test/messagelist_json_test.dart +++ b/pkgs/messages/test/messagelist_json_test.dart @@ -34,7 +34,6 @@ void main() { serializationVersion: serializationVersion, locale: 'en_US', hash: 'hash', - hasIds: false, ), [ StringMessage('Hello World'), @@ -64,7 +63,6 @@ void main() { null, ); - expect(messageList.preamble.hasIds, false); expect(messageList.preamble.locale, 'en_US'); expect(messageList.generateStringAtIndex(0, []), 'Hello World'); expect(messageList.generateStringAtIndex(1, ['case1']), 'Case case1');