Changeset 666465b in git


Ignore:
Timestamp:
Sep 25, 2005, 5:35:57 PM (19 years ago)
Author:
Michael Brickenstein <bricken@…>
Branches:
(u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
Children:
82d1a72c907e4d9593d13fb4216f23d0e65fad42
Parents:
35ad2d7b29d3ac4852f704804d704a4417c383eb
Message:
*bricken real xml encoder


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

Legend:

Unmodified
Added
Removed
  • modules/openmathserver/context.py

    r35ad2d r666465b  
    55from objects import *
    66from re import compile
     7import StringIO
     8from xml.sax.saxutils import XMLGenerator
    79class Context(object):
    810    #TODO: Referenzen durch scope richtig behandeln
     
    7476        #TODO: Make Attribution List attributes
    7577        #TODO: Make all objects __hash__ and __eq__
     78        out=StringIO.StringIO()
     79        G=XMLGenerator(out)
     80        obj.XMLSAXEncode(self,G)
     81        return out.getvalue()
    7682        if (len(obj.attributes)==0):
    7783            return "".join(obj.XMLPreEncode(self))
  • modules/openmathserver/objects.py

    r35ad2d r666465b  
    44from exceptions import NotImplementedError
    55from copy import copy
     6from xml.sax.xmlreader import AttributesImpl as attr
    67import base64
    78#TODO: OMOBJ, OME, OMATTR
     
    7374            raise UnsupportedOperationError
    7475    def __getXMLAttributes(self):
    75         try:
     76        if hasattr(self, "getXMLAttributes"):
    7677            return self.getXMLAttributes()
    77         except AttributeError:
    78             try:
    79                 return self.__XMLAttributes
    80             except AttributeError:
     78        if hasattr(self,"__XMLAttributes"):
     79            return self.__XMLAttributes
     80        return {}
     81            #except AttributeError:
    8182                #do return None, cause if modifiying a new list, changes will not be saved
    82                 return []
     83            #    return {}
    8384    def __delXMLAttributes(self):
    8485        try:
     
    143144        encodingList.extend(["</"+self.XMLtag+">"])
    144145        return encodingList
    145 
     146    def XMLSAXEncode(self, context, generator):
     147        #works not for attp
     148        generator.startElement(self.XMLtag, attr(self.XMLAttributes))
     149        for c in self.children:
     150          c.XMLSAXEncode(context, generator)
     151        if not self.children:
     152          body=self.body
     153          if body:
     154            generator.characters(self.body)
     155        generator.endElement(self.XMLtag)
    146156class OMObject(OMObjectBase):
    147157    def __init__(self, children):
     
    210220    XMLtag="OMS"
    211221    def getXMLAttributes(self):
    212         return [XMLAttribute("name", self.name),\
    213                  XMLAttribute("cdbase", self.cd.base),\
    214                  XMLAttribute("cd", self.cd.name)]
     222        #return [XMLAttribute("name", self.name),\
     223        #         XMLAttribute("cdbase", self.cd.base),\
     224        #         XMLAttribute("cd", self.cd.name)]
     225        return {"name":self.name, "cdbase":self.cd.base, "cd": self.cd.name}
    215226    def setXMLAttributes(self):
    216227        raise UnsupportedOperationError
     
    257268    XMLtag = "OMF"
    258269    def getXMLAttributes(self):
    259         return [XMLAttribute("dec" ,str(self.value))]
     270        return {"dec":str(self.value)}
    260271class OMString(SimpleValue):
    261272    def __init__(self,value):
  • modules/openmathserver/omxmlreader.py

    r35ad2d r666465b  
    154154    if eval:
    155155        doc=context.evaluate(doc)
     156    #import profile
     157    #profile.run('output=context.XMLEncodeObject(doc)','encodeprof')
    156158    output=context.XMLEncodeObject(doc)
    157159    try:
Note: See TracChangeset for help on using the changeset viewer.