Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Build Status

This is the Namespace Trie.

Namespace Trie is a implementation of a Trie data structure. Unlike typical implementations, which are splitting its value into single characters, Namespace Trie treats its values as namespaces. Namespaces are strings that are delimited by a period. Such namespaces often occur in programming languages, e.g. Java or Python and may also appear while using some libraries for programming languages that itself do not offer namespacing (e.g. the Google Closure library offers a namespace feature for JavaScript). The Namespace Trie may help you find flaws in the namespace structure.

Namespace Trie is developed for use with Closure Depresolver and may at the moment not be very useful as there is not standalone interface.

Install

from pip:

pip install namespacetrie

from source:

pip install git+git://github.com/knutwalker/namespacetrie.git

Usage

from namespacetrie.nstrie import NsTrie
modules = ['com.example.foo', 'com.example.bar', 'com.example.baz.Foo',
           'com.example.baz.Bar', 'org.example']
trie = NsTrie(modules)
'com.example' in trie
# True

trie.has('com.example')
# False

trie.has('com.example', False)
# True

trie.has('com.example.foo')
# True

node = trie.get('com.example')
node.keys()
# ['foo', 'bar', 'baz']

trie.to_dict()
# {'com': {'example': {'bar': 'com.example.bar',
#    'baz': {'Bar': 'com.example.baz.Bar', 'Foo': 'com.example.baz.Foo'},
#    'foo': 'com.example.foo'}},
#  'org': {'example': 'org.example'}}

list(trie.iterdepth())
# ['com', 'com.example', 'com.example.foo', 'com.example.bar',
#  'com.example.baz', 'com.example.baz.Foo', 'com.example.baz.Bar',
#  'org', 'org.example']

list(trie.iterbreadth())
# ['com', 'org', 'com.example', 'org.example', 'com.example.foo',
#  'com.example.bar', 'com.example.baz', 'com.example.baz.Foo',
#  'com.example.baz.Bar']

trie.remove('com')
list(trie)
# [('org', [('example', 'org.example')])]

About

A Trie implementation that manages not the single characters but treats its values as typical namespaces.

Resources

License

Packages

No packages published

Languages

You can’t perform that action at this time.