blob: ed344e6f24e735b7976fc3a6791f26ce4437a491 [file] [log] [blame]
// Copyright (c) 2015, 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:collection/collection.dart';
/// A map from case-insensitive strings to values.
///
/// Much of HTTP is case-insensitive, so this is useful to have pre-defined.
class CaseInsensitiveMap<V> extends CanonicalizedMap<String, String, V> {
/// Creates an empty case-insensitive map.
CaseInsensitiveMap() : super(_canonicalizer);
/// Creates a case-insensitive map that is initialized with the key/value
/// pairs of [other].
CaseInsensitiveMap.from(Map<String, V> other)
: super.from(other, _canonicalizer);
/// Creates a case-insensitive map that is initialized with the key/value
/// pairs of [entries].
CaseInsensitiveMap.fromEntries(Iterable<MapEntry<String, V>> entries)
: super.fromEntries(entries, _canonicalizer);
static String _canonicalizer(String key) => key.toLowerCase();
}