Changeset 3040:f8ecfcf0dd77 in livinglogic.python.xist

Show
Ignore:
Timestamp:
11/26/07 18:28:18 (12 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

The VPool constructor wraps modules in pools now. Implement the rest of the pool methods.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/ll/xist/xsc.py

    r3039 r3040  
    40154015 
    40164016class VPool(list): 
    4017     def __init__(self, *modules): 
    4018         """ 
    4019         <par>Create a new pool. All modules in <arg>modules</arg> will be passed 
    4020         to the <method>register</method> method.</par> 
    4021         """ 
    4022         list.__init__(self, modules) 
     4017    def __init__(self, *pools): 
     4018        """ 
     4019        <par>Create a new pool.</par> 
     4020        """ 
     4021        list.__init__(self, [Pool(pool) if isinstance(pool, types.ModuleType) else pool for pool in pools]) 
     4022 
     4023    def elementclass(self, name, xmlns): 
     4024        for pool in self: 
     4025            try: 
     4026                return pool.elementclass(name, xmlns) 
     4027            except IllegalElementError: 
     4028                pass 
     4029        raise IllegalElementError(name, xmlns, False) 
     4030 
     4031    def elementclass_xml(self, name, xmlns): 
     4032        for pool in self: 
     4033            try: 
     4034                return pool.elementclass_xml(name, xmlns) 
     4035            except IllegalElementError: 
     4036                pass 
     4037        raise IllegalElementError(name, xmlns, True) 
     4038 
     4039    def element(self, name, xmlns): 
     4040        result = self.elementclass(name, xmlns)() 
     4041        result.pool = self 
     4042        return result 
     4043 
     4044    def element_xml(self, name, xmlns): 
     4045        result = self.elementclass_xml(name, xmlns)() 
     4046        result.pool = self 
     4047        return result 
     4048 
     4049    def haselement(self, name, xmlns): 
     4050        return any(pool.haselement(name, xmlns) for pool in self) 
     4051 
     4052    def haselement_xml(self, name, xmlns): 
     4053        return any(pool.haselement_xml(name, xmlns) for pool in self) 
     4054 
     4055    def procinstclass(self, name): 
     4056        for pool in self: 
     4057            try: 
     4058                return pool.procinstclass(name) 
     4059            except IllegalProcInstError: 
     4060                pass 
     4061        raise IllegalProcInstError(name, False) 
     4062 
     4063    def procinstclass_xml(self, name): 
     4064        for pool in self: 
     4065            try: 
     4066                return pool.procinstclass_xml(name) 
     4067            except IllegalProcInstError: 
     4068                pass 
     4069        raise IllegalProcInstError(name, True) 
     4070 
     4071    def procinst(self, name): 
     4072        result = self.procinstclass(name)() 
     4073        result.pool = self 
     4074        return result 
     4075 
     4076    def procinst_xml(self, name): 
     4077        result = self.procinstclass_xml(name)() 
     4078        result.pool = self 
     4079        return result 
     4080 
     4081    def hasprocinst(self, name): 
     4082        return any(pool.hasprocinst(name) for pool in self) 
     4083 
     4084    def hasprocinst_xml(self, name): 
     4085        return any(pool.hasprocinst_xml(name) for pool in self) 
     4086 
     4087    def entityclass(self, name): 
     4088        for pool in self: 
     4089            try: 
     4090                return pool.entityclass(name) 
     4091            except IllegalEntityError: 
     4092                pass 
     4093        raise IllegalEntityError(name, False) 
     4094 
     4095    def entityclass_xml(self, name): 
     4096        for pool in self: 
     4097            try: 
     4098                return pool.entityclass_xml(name) 
     4099            except IllegalEntityError: 
     4100                pass 
     4101        raise IllegalEntityError(name, True) 
     4102 
     4103    def entity(self, name): 
     4104        result = self.entityclass(name)() 
     4105        result.pool = self 
     4106        return result 
     4107 
     4108    def entity_xml(self, name): 
     4109        result = self.entityclass_xml(name)() 
     4110        result.pool = self 
     4111        return result 
     4112 
     4113    def hasentity(self, name): 
     4114        return any(pool.hasentity(name) for pool in self) 
     4115 
     4116    def hasentity_xml(self, name): 
     4117        return any(pool.hasentity_xml(name) for pool in self) 
     4118 
     4119    def charrefclass(self, name): 
     4120        for pool in self: 
     4121            try: 
     4122                return pool.charrefclass(name) 
     4123            except IllegalElementError: 
     4124                pass 
     4125        raise IllegalProcInstError(name, False) 
     4126 
     4127    def charrefclass_xml(self, name): 
     4128        for pool in self: 
     4129            try: 
     4130                return pool.charrefclass_xml(name) 
     4131            except IllegalElementError: 
     4132                pass 
     4133        raise IllegalProcInstError(name, True) 
     4134 
     4135    def charref(self, name): 
     4136        result = self.charrefclass(name)() 
     4137        result.pool = self 
     4138        return result 
     4139 
     4140    def charref_xml(self, name): 
     4141        result = self.charrefclass_xml(name)() 
     4142        result.pool = self 
     4143        return result 
     4144 
     4145    def hascharref(self, name): 
     4146        return any(pool.hascharref(name) for pool in self) 
     4147 
     4148    def hascharref_xml(self, name): 
     4149        return any(pool.hascharref_xml(name) for pool in self) 
     4150 
     4151    def attrclass(self, name, xmlns): 
     4152        try: 
     4153            return Pool.attrclass(self, name, xmlns) 
     4154        except IllegalAttrError: 
     4155            if self.base is not None: 
     4156                return self.base.attrclass(name, xmlns) 
     4157            raise 
     4158 
     4159    def attrclass_xml(self, name, xmlns): 
     4160        try: 
     4161            return Pool.attrclass_xml(self, name, xmlns) 
     4162        except IllegalAttrError: 
     4163            if self.base is not None: 
     4164                return self.base.attrclass_xml(name, xmlns) 
     4165            raise 
    40234166 
    40244167    def __getattr__(self, key): 
    4025         for module in self: 
     4168        for pool in self: 
    40264169            try: 
    4027                 attr = getattr(module, key) 
     4170                attr = getattr(pool, key) 
    40284171            except AttributeError: 
    40294172                pass 
     
    40394182        raise AttributeError(key) 
    40404183 
     4184    def clone(self): 
     4185        return self.__class__(*self) 
     4186 
    40414187    def __repr__(self): 
    40424188        return "<%s.%s object with %d items at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, len(self), id(self))