| // Copyright (c) 2013, 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. |
| |
| part of dart.convert; |
| |
| /** |
| * Open-ended Encoding enum. |
| */ |
| abstract class Encoding extends Codec<String, List<int>> { |
| const Encoding(); |
| |
| Future<String> decodeStream(Stream<List<int>> byteStream) { |
| return byteStream |
| .transform(decoder) |
| .fold(new StringBuffer(), (buffer, string) => buffer..write(string)) |
| .then((buffer) => buffer.toString()); |
| } |
| |
| /** |
| * Name of the encoding. |
| * |
| * If the encoding is standardized, this is the lower-case version of one of |
| * the IANA official names for the character set (see |
| * http://www.iana.org/assignments/character-sets/character-sets.xml) |
| */ |
| String get name; |
| |
| // All aliases (in lowercase) of supported encoding from |
| // http://www.iana.org/assignments/character-sets/character-sets.xml. |
| static Map<String, Encoding> _nameToEncoding = <String, Encoding> { |
| // ISO_8859-1:1987. |
| "iso_8859-1:1987": LATIN1, |
| "iso-ir-100": LATIN1, |
| "iso_8859-1": LATIN1, |
| "iso-8859-1": LATIN1, |
| "latin1": LATIN1, |
| "l1": LATIN1, |
| "ibm819": LATIN1, |
| "cp819": LATIN1, |
| "csisolatin1": LATIN1, |
| |
| // US-ASCII. |
| "iso-ir-6": ASCII, |
| "ansi_x3.4-1968": ASCII, |
| "ansi_x3.4-1986": ASCII, |
| "iso_646.irv:1991": ASCII, |
| "iso646-us": ASCII, |
| "us-ascii": ASCII, |
| "us": ASCII, |
| "ibm367": ASCII, |
| "cp367": ASCII, |
| "csascii": ASCII, |
| "ascii": ASCII, // This is not in the IANA official names. |
| |
| // UTF-8. |
| "csutf8": UTF8, |
| "utf-8": UTF8 |
| }; |
| |
| /** |
| * Gets an [Encoding] object from the name of the character set |
| * name. The names used are the IANA official names for the |
| * character set (see |
| * http://www.iana.org/assignments/character-sets/character-sets.xml). |
| * |
| * The [name] passed is case insensitive. |
| * |
| * If character set is not supported [:null:] is returned. |
| */ |
| static Encoding getByName(String name) { |
| if (name == null) return null; |
| name = name.toLowerCase(); |
| return _nameToEncoding[name]; |
| } |
| } |