From: SourceForge.net <no...@so...> - 2005-02-21 18:05:24
|
Feature Requests item #1145632, was opened at 2005-02-21 19:05 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=422033&aid=1145632&group_id=38414 Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: dan_t_ (dan_t_) Assigned to: Nobody/Anonymous (nobody) Summary: allow custom interpreted text roles resolver Initial Comment: I need to replace the default intepreted text roles resolver roles.role() with a custom one. Actually there is no easy way to do that. I have cooked the small patch attached to do that. In this way i can do something like: class Roles: def __init__(self): self.resolvers = [ ] def register(self, resolver): self.resolvers.append(resolver) def role(self, *args, **kwargs): function, messages = roles.role(*args, **kwargs) if function is None: for resolver in self.resolvers: handler = resolver(*args, **kwargs) if callable(handler): return handler, [] return function, messages class Inliner(rst.states.Inliner): def __init__(self): roles = Roles() rst.states.Inliner.__init__(self, roles=roles) class Parser(rst.Parser): def __init__(self): inliner = Inliner() rst.Parser.__init__(self, inliner=inliner) class Reader(standalone.Reader): def __init__(self, obj, hub): parser = Parser() standalone.Reader.__init__(self, parser=parser) reader = Reader(obj, hub) reader.parser.inliner.roles.register(CustomRolesResolver(params)) writer = Writer() parts = publish_parts(source=src, reader=reader, writer=writer, settings_overrides=settings, config_section='my application') where CustomRoleResolver() is a class that has a __call__ method that implements the interface of roles.role() function. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=422033&aid=1145632&group_id=38414 |
From: SourceForge.net <no...@so...> - 2005-02-21 18:34:43
|
Feature Requests item #1145654, was opened at 2005-02-21 19:34 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=422033&aid=1145654&group_id=38414 Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: dan_t_ (dan_t_) Assigned to: Nobody/Anonymous (nobody) Summary: allow custom interpreted text roles resolver Initial Comment: I need to replace the default intepreted text roles resolver roles.role() with a custom one. Actually there is no easy way to do that. I have cooked the small patch attached to do that. In this way i can do something like: class Roles: def __init__(self): self.resolvers = [ ] def register(self, resolver): self.resolvers.append(resolver) def role(self, *args, **kwargs): function, messages = roles.role(*args, **kwargs) if function is None: for resolver in self.resolvers: handler = resolver(*args, **kwargs) if callable(handler): return handler, [] return function, messages class Inliner(rst.states.Inliner): def __init__(self): roles = Roles() rst.states.Inliner.__init__(self, roles=roles) class Parser(rst.Parser): def __init__(self): inliner = Inliner() rst.Parser.__init__(self, inliner=inliner) class Reader(standalone.Reader): def __init__(self, obj, hub): parser = Parser() standalone.Reader.__init__(self, parser=parser) reader = Reader(obj, hub) reader.parser.inliner.roles.register(CustomRolesResolver(params)) writer = Writer() parts = publish_parts(source=src, reader=reader, writer=writer, settings_overrides=settings, config_section='my application') where CustomRoleResolver() is a class that has a __call__ method that implements the interface of roles.role() function. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=422033&aid=1145654&group_id=38414 |