X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-python%2Favahi%2FServiceTypeDatabase.py.in;h=8ad8d5edbd91ce21b9a467ee7b3e6bcb06313c74;hb=0458aec3b31f7a5c73bab74f131914249c8dd6f6;hp=d1345109cae3b378ed86cdd666868b38190f2813;hpb=331465566be1e1821c0bb3738f8de130dd8c19f8;p=catta diff --git a/avahi-python/avahi/ServiceTypeDatabase.py.in b/avahi-python/avahi/ServiceTypeDatabase.py.in index d134510..8ad8d5e 100644 --- a/avahi-python/avahi/ServiceTypeDatabase.py.in +++ b/avahi-python/avahi/ServiceTypeDatabase.py.in @@ -1,7 +1,5 @@ #!@PYTHON@ # -*-python-*- -# $Id$ - # This file is part of avahi. # # avahi is free software; you can redistribute it and/or modify it @@ -26,6 +24,7 @@ import re locale.setlocale(locale.LC_ALL, '') class ServiceTypeDatabase: + """ServiceTypeDatabase maps service types to descriptions""" def __init__(self, filename = "@pkglibdir@/service-types.db"): @@ -68,14 +67,7 @@ class ServiceTypeDatabase: def items(self): - items = [] - @FIRST_KEY@ - @CHECK_KEY@ - if re.search('_[a-zA-Z0-9-]+\._[a-zA-Z0-9-]+', key) and not re.search('_[a-zA-Z0-9-]+\._[a-zA-Z0-9-]+\[.*\]', key): - localized_service_name = self[key] - items.append((key, localized_service_name)) - @NEXT_KEY@ - return items + return list(self.iteritems()) def has_key(self, key): @@ -96,6 +88,52 @@ class ServiceTypeDatabase: return False + def __iter__(self): + + @FIRST_KEY@ + @CHECK_KEY@ + + if re.search('_[a-zA-Z0-9-]+\._[a-zA-Z0-9-]+', key) and not re.search('_[a-zA-Z0-9-]+\._[a-zA-Z0-9-]+\[.*\]', key): + yield key + + @NEXT_KEY@ + + def __len__(self): + + count = 0 + for _ in self: + + count+=1 + + self.__len__ = lambda : count + return len(self) + + def get(self, key, default=None): + + if key in self: + return self[key] + else: + return default + + def iteritems(self): + + return ((key, self[key]) for key in self) + + def iterkeys(self): + + return self.__iter__() + + def itervalues(self): + + return (self[key] for key in self) + + def keys(self): + + return list(self) + + def values(self): + + return list(self.itervalues()) if __name__ == "__main__": @@ -107,4 +145,17 @@ if __name__ == "__main__": print b["_webdav._tcp"] print b["_webdavs._tcp"] - print b["gurki._tcp"] + print b.get("gurki._tcp") + print len(b) + + for key, _ in zip(b, xrange(3)): + + print key + + for key, _ in zip(b.iteritems(), xrange(3)): + + print key + + for key, _ in zip(b.itervalues(), xrange(3)): + + print key