| Index: third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/html5lib/html5lib/trie/datrie.py
|
| diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/html5lib/html5lib/trie/datrie.py b/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/html5lib/html5lib/trie/datrie.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..51f3d046a740834d2c183cd7e98cc12201e8f9be
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/html5lib/html5lib/trie/datrie.py
|
| @@ -0,0 +1,44 @@
|
| +from __future__ import absolute_import, division, unicode_literals
|
| +
|
| +from datrie import Trie as DATrie
|
| +from six import text_type
|
| +
|
| +from ._base import Trie as ABCTrie
|
| +
|
| +
|
| +class Trie(ABCTrie):
|
| + def __init__(self, data):
|
| + chars = set()
|
| + for key in data.keys():
|
| + if not isinstance(key, text_type):
|
| + raise TypeError("All keys must be strings")
|
| + for char in key:
|
| + chars.add(char)
|
| +
|
| + self._data = DATrie("".join(chars))
|
| + for key, value in data.items():
|
| + self._data[key] = value
|
| +
|
| + def __contains__(self, key):
|
| + return key in self._data
|
| +
|
| + def __len__(self):
|
| + return len(self._data)
|
| +
|
| + def __iter__(self):
|
| + raise NotImplementedError()
|
| +
|
| + def __getitem__(self, key):
|
| + return self._data[key]
|
| +
|
| + def keys(self, prefix=None):
|
| + return self._data.keys(prefix)
|
| +
|
| + def has_keys_with_prefix(self, prefix):
|
| + return self._data.has_keys_with_prefix(prefix)
|
| +
|
| + def longest_prefix(self, prefix):
|
| + return self._data.longest_prefix(prefix)
|
| +
|
| + def longest_prefix_item(self, prefix):
|
| + return self._data.longest_prefix_item(prefix)
|
|
|