| // Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file |
| // 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:messages/messages.dart'; |
| import 'placeholder.dart'; |
| |
| /// A wrapper class around a [Message], adding its [placeholders] and a [name]. |
| /// |
| /// This is the way a message is stored in the translation message ARB file, |
| /// for example |
| /// ```json |
| /// { |
| /// "name": "Hello {placeholder}!", |
| /// "@name": { |
| /// "description": "Initial welcome message", |
| /// "placeholders": { |
| /// "placeholder": { |
| /// "type": "String" |
| /// }, |
| /// } |
| /// }, |
| /// ... |
| /// } |
| /// ``` |
| class ParameterizedMessage { |
| final Message message; |
| final String name; |
| final List<Placeholder> placeholders; |
| |
| static final RegExp _dartName = RegExp(r'^[a-zA-Z][a-zA-Z_0-9]*$'); |
| |
| ParameterizedMessage(this.message, this.name, this.placeholders); |
| |
| bool get nameIsDartConform => _dartName.hasMatch(name); |
| } |