refactoring question

bryan rasmussen rasmussen.bryan at gmail.com
Thu May 4 08:14:22 EDT 2006


Hi, I'm doing a sort of symbolic linking app in Windows for my own
enjoyment, and figured I would do it in python for the same reason +
learning the language.

The following functions could obviously do with some refactoring. One
obvious thing would be to make wordsetter and wordsforfolder more
generic, and just pass a few extra parameters. But that seems sort of
stupid.

Any suggestions on refactoring here? other improvements?


def getwordslist(word):
 thisword = wordpath + word + ".xml"
 if exists(thisword):
       doc =  xml.dom.minidom.parse(thisword)
       loc =  doc.childNodes[0]
       for i in range(0, len(loc.childNodes)):
         if (loc.childNodes[i].firstChild.data == thispath):
               break
         else:
               wordsetter(thisword,doc,loc)


 else :
               doc = xml.dom.minidom.Document()
               loc = doc.createElementNS("", "locations")
               doc.appendChild(loc)
               wordsetter(thisword,doc,loc)

 return None

def getfolderwords(word):

 if exists(normpath(folderwords)):
       doc =  xml.dom.minidom.parse(folderwords)
       loc =  doc.childNodes[0]
       wordsforfolder(word,doc,loc)


 else :

       doc = xml.dom.minidom.Document()
       loc = doc.createElementNS("", "wordlist")
       doc.appendChild(loc)
       xml.dom.ext.PrettyPrint(doc, open(normpath(folderwords), "w"))
       wordsforfolder(word,doc,loc)

 return None


def wordsetter(word,doc,loc):
       thisloc = doc.createElementNS("", "location")
       xexpr= "//location[.='" + thispath + "']"

       xp = Evaluate(xexpr,doc.documentElement)
       if len(xp) < 1:

               loc.appendChild(thisloc)
               text = doc.createTextNode(thispath)
               thisloc.appendChild(text)
               fi = open(word, "w")
               fi.write(doc.toxml())


def wordsforfolder(word,doc,loc):
       thisloc = doc.createElementNS("", "word")
       xexpr= "//word[.='" + word + "']"

       xp = Evaluate(xexpr,doc.documentElement)
       if len(xp) < 1:

               loc.appendChild(thisloc)
               text = doc.createTextNode(word)
               thisloc.appendChild(text)
               fi = open(folderwords, "w")
               fi.write(doc.toxml())


Cheers,

Bryan Rasmussen



More information about the Python-list mailing list