diff options
author | Vincent Vinet <vince.vinet@gmail.com> | 2009-03-27 16:08:14 (GMT) |
---|---|---|
committer | Vincent Vinet <vince.vinet@gmail.com> | 2009-03-31 14:03:03 (GMT) |
commit | a8b5f4c91b12af9c3a2d84b5da99a71f46c6284d (patch) | |
tree | d3140e1671e51fa514a2a41c3bf1dd2c96e1801b /src/sugar/tutorius/uam/__init__.py | |
parent | 43ed90ec4003bc540eedde9610e632589df50ab6 (diff) |
Add shells for gobject and gtk parsers in UAM, complete tests
Diffstat (limited to 'src/sugar/tutorius/uam/__init__.py')
-rw-r--r-- | src/sugar/tutorius/uam/__init__.py | 51 |
1 files changed, 38 insertions, 13 deletions
diff --git a/src/sugar/tutorius/uam/__init__.py b/src/sugar/tutorius/uam/__init__.py index b55ae28..7cf5671 100644 --- a/src/sugar/tutorius/uam/__init__.py +++ b/src/sugar/tutorius/uam/__init__.py @@ -15,20 +15,23 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ -Universal addressing module +Universal Addressing Mechanism module Allows addressing Events, signals, widgets, etc for supported platforms """ from urllib2 import urlparse -SCHEMA="tap" #Tutorius Adressing Protocol +import gtkparser +import gobjectparser -SUBSCHEMAS = [ - "gtk", - "pygame", - "gobject", -] + +SCHEME="tap" #Tutorius Adressing Protocol + +__parsers = { + gtkparser.SCHEME:gtkparser.parse_gtk, + gobjectparser.SCHEME:gobjectparser.parse_gobject, +} def __add_to_urlparse(name): #Add to uses_netloc @@ -52,12 +55,34 @@ def __add_to_urlparse(name): urlparse.uses_fragment.append(name) -#Add schemas to urlparse -__add_to_urlparse(SCHEMA) +#Add schemes to urlparse +__add_to_urlparse(SCHEME) + +for subscheme in [".".join([SCHEME,s]) for s in __parsers]: + __add_to_urlparse(subscheme) + + +class SchemeError(Exception): + def __init__(self, message): + Exception.__init__(self, message) + self.message = message + -for subschema in [".".join([SCHEMA,s]) for s in SUBSCHEMAS]: - __add_to_urlparse(subschema) +def parse_uri(uri): + res = urlparse.urlparse(uri) + scheme = res.scheme.split(".")[0] + subscheme = ".".join(res.scheme.split(".")[1:]) + if not scheme == SCHEME: + raise SchemeError("Scheme %s not supported" % scheme) + + if subscheme != "" and not subscheme in __parsers: + raise SchemeError("SubScheme %s not supported" % subscheme) + + if subscheme: + return __parsers[subscheme](res) + + return res + + -#For now, just export the urlparse urlparse method -parse_uri = urlparse.urlparse |