| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file |  | 
| 2 // for details. All rights reserved. Use of this source code is governed by a |  | 
| 3 // BSD-style license that can be found in the LICENSE file. |  | 
| 4 |  | 
| 5 /** |  | 
| 6  * A library for general helper code associated with the intl library |  | 
| 7  * rather than confined to specific parts of it. |  | 
| 8  */ |  | 
| 9 |  | 
| 10 library intl_helpers; |  | 
| 11 |  | 
| 12 import 'dart:async'; |  | 
| 13 |  | 
| 14 /** |  | 
| 15  * This is used as a marker for a locale data map that hasn't been initialized, |  | 
| 16  * and will throw an exception on any usage that isn't the fallback |  | 
| 17  * patterns/symbols provided. |  | 
| 18  */ |  | 
| 19 class UninitializedLocaleData<F> { |  | 
| 20   final String message; |  | 
| 21   final F fallbackData; |  | 
| 22   const UninitializedLocaleData(this.message, this.fallbackData); |  | 
| 23 |  | 
| 24   operator [](String key) => |  | 
| 25       (key == 'en_US') ? fallbackData : _throwException(); |  | 
| 26 |  | 
| 27   String lookupMessage(String message_str, [final String desc = '', |  | 
| 28       final Map examples = const {}, String locale, String name, |  | 
| 29       List<String> args, String meaning]) => message_str; |  | 
| 30 |  | 
| 31   List get keys => _throwException(); |  | 
| 32 |  | 
| 33   bool containsKey(String key) => (key == 'en_US') ? true : _throwException(); |  | 
| 34 |  | 
| 35   _throwException() { |  | 
| 36     throw new LocaleDataException("Locale data has not been initialized" |  | 
| 37         ", call $message."); |  | 
| 38   } |  | 
| 39 } |  | 
| 40 |  | 
| 41 class LocaleDataException implements Exception { |  | 
| 42   final String message; |  | 
| 43   LocaleDataException(this.message); |  | 
| 44   toString() => "LocaleDataException: $message"; |  | 
| 45 } |  | 
| 46 |  | 
| 47 /** |  | 
| 48  *  An abstract superclass for data readers to keep the type system happy. |  | 
| 49  */ |  | 
| 50 abstract class LocaleDataReader { |  | 
| 51   Future read(String locale); |  | 
| 52 } |  | 
| 53 |  | 
| 54 /** |  | 
| 55  * The internal mechanism for looking up messages. We expect this to be set |  | 
| 56  * by the implementing package so that we're not dependent on its |  | 
| 57  * implementation. |  | 
| 58  */ |  | 
| 59 var messageLookup = |  | 
| 60     const UninitializedLocaleData('initializeMessages(<locale>)', null); |  | 
| 61 |  | 
| 62 /** |  | 
| 63  * Initialize the message lookup mechanism. This is for internal use only. |  | 
| 64  * User applications should import `message_lookup_by_library.dart` and call |  | 
| 65  * `initializeMessages` |  | 
| 66  */ |  | 
| 67 void initializeInternalMessageLookup(Function lookupFunction) { |  | 
| 68   if (messageLookup is UninitializedLocaleData) { |  | 
| 69     messageLookup = lookupFunction(); |  | 
| 70   } |  | 
| 71 } |  | 
| OLD | NEW | 
|---|