Changeset 04f6a4 in git


Ignore:
Timestamp:
Jun 15, 2005, 12:37:39 PM (19 years ago)
Author:
Michael Brickenstein <bricken@…>
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
16678227fe277530e8904f607ce8e6128f93df2a
Parents:
c0124632d28789a5766a1280af3eab471d401852
Message:
*bricken: references and scopes work


git-svn-id: file:///usr/local/Singular/svn/trunk@8369 2c84dea3-7e68-4137-9b89-c4e89433aadc
Location:
modules/openmathserver
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • modules/openmathserver/cd.py

    rc012463 r04f6a4  
    66        self.base=base
    77    def  __eq__(self, other):
    8         return (self.name==other.name) and (self.base==other.base)
     8        try:
     9            return (self.name==other.name) and (self.base==other.base)
     10        except:
     11            return False
    912    def __hash__(self):
    1013        return hash((self.name,self.base))
  • modules/openmathserver/objects.py

    rc012463 r04f6a4  
    148148        self.name=name
    149149    def __eq__(self, other):
    150         return bool(other.name==self.name and self.cd==other.cd)
     150        try:
     151            return bool(other.name==self.name and self.cd==other.cd)
     152        except:
     153            return False
    151154    def __str__(self):
    152155        return "OMS("+self.name+", "+self.cd.name + ")"
     
    203206    def getXMLattributes(self):
    204207        return [XMLattribute("dec",str(self.value))]
    205        
     208class OMref(OMObjectBase):
     209    def __init__(self, ref):
     210        self.ref=ref
     211    def evaluate(self, context):
     212        return context.evaluate(self.ref)
     213    def XMLencode(self, context):
     214        "FIXME: maybe it should also be able to encode as reference"
     215        return context.XMLEncodeObject(self.ref)
    206216if __name__=='__main__':
    207217    from context import *
  • modules/openmathserver/omexceptions.py

    rc012463 r04f6a4  
    99class UnsupportedOperationError(Exception):
    1010    pass
     11class UnresolvedReference(Exception):
     12    pass
  • modules/openmathserver/omxmlreader.py

    rc012463 r04f6a4  
    1212from cd import *
    1313from exceptions import *
     14from omexceptions import *
    1415def readFile(input_file_name):
    1516    docstream = open(input_file_name)
     
    4344class OMFromXMLBuilder:
    4445    def buildFromNode(self, node):
     46        erg=None
    4547        if (node.nodeName=="OMI"):
    4648            content=get_text_in_children(node)
    47             return OMint(content)
     49            erg=OMint(content)
    4850        if (node.nodeName=="OMV"):
    4951            name=node.getAttribute("name") #node.attributes["name"]
    5052            #print dir(name)
    51             return OMvar(name)
     53            erg= OMvar(name)
    5254        if (node.nodeName=="OMS"):
    5355            if node.hasAttribute("cdbase"):
     
    6567            else:
    6668                cd=OMcd(cdname,cdbase)
    67             return OMsymbol(name,cd)
     69            erg=OMsymbol(name,cd)
    6870        if (node.nodeName=="OMA"):
    6971            children=[self.buildFromNode(c) for c in node.childNodes]
    70             return OMapplication(children[0],children[1:])
     72            erg= OMapplication(children[0],children[1:])
    7173        if (node.nodeName=="OMBIND"):
    7274            children=[self.buildFromNode(c) for c in node.childNodes]
    73             return OMbinding(children[0],children[1:-1],children[-1])
     75            erg= OMbinding(children[0],children[1:-1],children[-1])
    7476        if (node.nodeName=="OMF"):
    7577            if (node.hasAttribute("dec")):
     
    7779            else:
    7880                raise NotImplementedError
    79             return OMfloat(value)
    80            
    81         raise NotImplementedError
     81            erg=OMfloat(value)
     82        if (node.nodeName=="OMR"):
     83            if node.hasAttribute("xref"):
     84                erg=OMref(node.getAttribute("xref"))
     85                self.refs.append(erg)
     86            else:
     87                raise UnresolvedReference
     88        if None==erg:
     89            raise NotImplementedError
     90        else:
     91            if node.hasAttribute("id"):
     92                id=node.getAttribute("id")
     93                self.ids[id]=erg
     94            return erg
     95    def __init__(self):
     96        self.refs=[]
     97        self.ids={}
    8298    def build(self, root):
    8399        remove_white_space(root)
    84         return self.buildFromNode(root)
     100        erg=self.buildFromNode(root)
     101        for r in self.refs:
     102            r.ref=self.ids[r.ref]
     103        return erg
    85104#TODO: handle hex floats
    86105#TODO: handle floats
Note: See TracChangeset for help on using the changeset viewer.