Index: pkg/intl/lib/src/icu_parser.dart |
diff --git a/pkg/intl/lib/src/icu_parser.dart b/pkg/intl/lib/src/icu_parser.dart |
deleted file mode 100644 |
index 0565ce09ace3493c626de8d022cb4d302e22d287..0000000000000000000000000000000000000000 |
--- a/pkg/intl/lib/src/icu_parser.dart |
+++ /dev/null |
@@ -1,108 +0,0 @@ |
-// Copyright (c) 2014, 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. |
- |
-/** |
- * Contains a parser for ICU format plural/gender/select format for localized |
- * messages. See extract_to_arb.dart and make_hardcoded_translation.dart. |
- */ |
-library icu_parser; |
- |
-import 'package:intl/src/intl_message.dart'; |
-import 'package:petitparser/petitparser.dart'; |
- |
-/** |
- * This defines a grammar for ICU MessageFormat syntax. Usage is |
- * new IcuParser.message.parse(<string>).value; |
- * The "parse" method will return a Success or Failure object which responds |
- * to "value". |
- */ |
-class IcuParser { |
- get openCurly => char("{"); |
- |
- get closeCurly => char("}"); |
- get quotedCurly => (string("'{'") | string("'}'")).map((x) => x[1]); |
- |
- get icuEscapedText => quotedCurly | twoSingleQuotes; |
- get curly => (openCurly | closeCurly); |
- get notAllowedInIcuText => curly | char("<"); |
- get icuText => notAllowedInIcuText.neg(); |
- get notAllowedInNormalText => char("{"); |
- get normalText => notAllowedInNormalText.neg(); |
- get messageText => (icuEscapedText | icuText) |
- .plus().map((x) => x.join()); |
- get nonIcuMessageText => normalText.plus().map((x) => x.join()); |
- get twoSingleQuotes => string("''").map((x) => "'"); |
- get number => digit().plus().flatten().trim().map(int.parse); |
- get id => (letter() & (word() | char("_")).star()).flatten(); |
- get comma => char(",").trim(); |
- |
- /** |
- * Given a list of possible keywords, return a rule that accepts any of them. |
- * e.g., given ["male", "female", "other"], accept any of them. |
- */ |
- asKeywords(list) => list.map(string).reduce((a, b) => a | b).flatten().trim(); |
- |
- get pluralKeyword => asKeywords( |
- ["=0", "=1", "=2", "zero", "one", "two", "few", "many", "other"]); |
- get genderKeyword => asKeywords( |
- ["female", "male", "other"]); |
- |
- var interiorText = undefined(); |
- |
- get preface => (openCurly & id & comma).map((values) => values[1]); |
- |
- get pluralLiteral => string("plural"); |
- get pluralClause => (pluralKeyword & openCurly & interiorText & closeCurly) |
- .trim().map((result) => [result[0], result[2]]); |
- get plural => |
- preface & pluralLiteral & comma & pluralClause.plus() & closeCurly; |
- get intlPlural => |
- plural.map((values) => new Plural.from(values.first, values[3], null)); |
- |
- get selectLiteral => string("select"); |
- get genderClause => (genderKeyword & openCurly & interiorText & closeCurly) |
- .trim().map((result) => [result[0], result[2]]); |
- get gender => |
- preface & selectLiteral & comma & genderClause.plus() & closeCurly; |
- get intlGender => |
- gender.map((values) => new Gender.from(values.first, values[3], null)); |
- get selectClause => (id & openCurly & interiorText & closeCurly).map( |
- (x) => [x.first, x[2]]); |
- get generalSelect => preface & selectLiteral & comma & |
- selectClause.plus() & closeCurly; |
- get intlSelect => generalSelect.map( |
- (values) => new Select.from(values.first, values[3], null)); |
- |
- get pluralOrGenderOrSelect => intlPlural | intlGender | intlSelect; |
- |
- get contents => pluralOrGenderOrSelect | parameter | messageText; |
- get simpleText => (nonIcuMessageText | parameter | openCurly).plus(); |
- get empty => epsilon().map((_) => ''); |
- |
- get parameter => (openCurly & id & closeCurly).map( |
- (param) => new VariableSubstitution.named(param[1], null)); |
- |
- /** |
- * The primary entry point for parsing. Accepts a string and produces |
- * a parsed representation of it as a Message. |
- */ |
- get message => (pluralOrGenderOrSelect | empty).map((chunk) => |
- Message.from(chunk, null)); |
- |
- /** |
- * Represents an ordinary message, i.e. not a plural/gender/select, although |
- * it may have parameters. |
- */ |
- get nonIcuMessage => (simpleText | empty).map((chunk) => |
- Message.from(chunk, null)); |
- |
- get stuff => (pluralOrGenderOrSelect | empty).map( |
- (chunk) => Message.from(chunk, null)); |
- |
- IcuParser() { |
- // There is a cycle here, so we need the explicit set to avoid |
- // infinite recursion. |
- interiorText.set(contents.plus() | empty); |
- } |
-} |