/[navidoc]/navidoc/navidoc/parser.py
ViewVC logotype

Diff of /navidoc/navidoc/parser.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by humppake, Wed Mar 26 15:36:17 2003 UTC revision 1.2 by humppake, Thu Mar 27 09:33:48 2003 UTC
# Line 44  def __init__(): Line 44  def __init__():
44      """      """
45      Gather available elements and linktypes from modules.      Gather available elements and linktypes from modules.
46      """      """
47      element_types = keys4classes(navidoc.mp)      #XXX: Fix key-name conflicts
48      link_types = keys4classes(navidoc.link)      element_types.update(keys4classes(navidoc.mp))
49        for module in dir(navidoc.mp):
50            module = getattr(root_module, module)
51            element_types.update(keys4classes(module))
52    
53        link_types.update(keys4classes(navidoc.link))
54        for module in dir(navidoc.link):
55            module = getattr(root_module, module)
56            link_types.update(keys4classes(module))
57    
58  def keys4classes(root_module):  def keys4classes(module):
59      """      """
60      Gather a key -> class dictionary for all classes containing      Gather a key -> class dictionary for all classes containing
61      'key' in sub modules under root module.      'key' in sub modules under root module.
62      """      """
63      d = {}      d = {}
64      for module in dir(root_module):      for elements in dir(module):
65          module = getattr(root_module, module)          for element in elements:
66          for elements in dir(module):              element = getattr(module, element)
67              for element in elements:              if hassattr(element, "key") \
68                  element = getattr(module, element)                     and type(element.key) == type(''):
69                  if hassattr(element, "key") \                  d[element.key] = element
                        and type(element.key) == type(''):  
                     d[element.key] = element  
70      return d      return d
71    
72  class ParserException(Exception):  class ParserException(Exception):
# Line 144  class NamedElement (Element): Line 150  class NamedElement (Element):
150              self.handle_contained(el)              self.handle_contained(el)
151          dbg("Link: "+self.link)          dbg("Link: "+self.link)
152      def handle_contained(self, el):      def handle_contained(self, el):
153          if el[0] == "link":          if link_types.has_key(el[0]):
154              link = el[1:]              link = el[1:]
155              if len(link):              if len(link):
156                  self.link = link[0][0]                  self.link = link_types[el[0]](link[0][0])
157              else:              else:
158                  self.link = self.defaultlink()                  self.link = self.defaultlink()
159          else:          else:
160              self.list.add_sub_element(self.name, el)              self.list.add_sub_element(self.name, el)
161      def defaultlink(self):      def defaultlink(self):
162          return self.name          return = navidoc.link.Link(link[0][0])
163    
164  class ElementList:  class ElementList:
165      """      """
# Line 214  class ElementList: Line 220  class ElementList:
220          code = "\n".join([element.draw_code() for element in self.list]) + "\n"          code = "\n".join([element.draw_code() for element in self.list]) + "\n"
221          return code          return code
222    
 class Link:  
     def __init__(self, elements):  
         """  
         Initilize Link. Parse link name and corners of linked area  
         from elements.  
         """  
         self.name = re.match('^"(.*)"$', elements[0]).group(1)  
         self.corners = [float(element) for element in elements[1:]]  
         dbg("Link init: "+self.name)  
     def map_corners(self, mapper):  
         """  
         Map exact coordinates from corner elements using  
         provided mapper.  
         """  
         dbg("Unmapped corners: "+self.corners)  
         self.corners = [int(element) for element in (  
             mapper(self.corners[0], self.corners[1]) +  
             mapper(self.corners[2], self.corners[3])  
             )]  
         dbg("Mapped corners: "+self.corners)  
   
     def imgmapanchor(self, scale=1.0):  
         pass  
 #        if titles.has_key(self.name):  
 #            return """<area href="%s" shape="rect" coords="%s" target="_top" title="%s" alt="%s" />\n""" \  
 #                   % (target(self.name),  
 #                      ",".join(["%s"%(int(c*scale)) for c in self.corners]),  
 #                      titles[self.name],  
 #                      self.name)  
 #        else:  
 #            return """<area href="%s" shape="rect" coords="%s" target="_top" title="%s" alt="%s" />\n""" \  
 #                   % (target(self.name),  
 #                      ",".join(["%s"%(int(c*scale)) for c in self.corners]),  
 #                      self.name,  
 #                      self.name)  
   
     def jlinkstr(box, RoughEdge=1):  
         pass  
 #        if jlink != None:  
 #             #trimming jlink to comparable  
 #             name = jlink  
 #             if name.rfind("#") != -1:  
 #                 name = name[0:name.rfind("#")]  
 #             if name.endswith(".html"): name = name[0:len(name)-5]  
 #             if name.endswith(".gen"): name = name[0:len(name)-4]  
 #             #Marking "Broken link" if file not found  
 #             if settings.has_key('path'):  
 #                slash = settings['path'].rfind("/")  
 #                if slash != -1:  
 #                    path = (settings['path'][0:slash+1] + target(jlink)).replace("//", "/")  
 #                else:  
 #                    path = target(jlink).replace("//", "/")  
 #                if path.rfind("#") != -1:  
 #                    path = path[0:path.rfind("#")]  
 #                if not os.path.isfile(path):  
 #     #               print path  
 #                     return 'showlinkerror("'+jlink+'", ('+box+'));'  
 #                else:  
 #                     file = open(path)                  
 #                     title = re.compile('<title>([^<]*)</title>')  
 #                     title = title.findall(file.read())  
 #                     file.close()  
 #                     if len(title) > 0: title = title[0]  
 #                     else: title = jlink  
 #                     titles[jlink] = title#  
   
 #             """ If focus is set and 'focus' matches, focus jlink. """  
 #             #comparing  
 #             if settings.has_key('focus') and (\  
 #                settings['focus'].find("_"+name.replace(".", "_")+".") != -1 or \  
 #                settings['focus'].find("_"+name.replace(".", "_")+"_package") != -1):  
 #                 if RoughEdge: return 'showfocus("'+jlink+'", ('+box+'));'+"\n"+'drawRoughEdge(('+box+'));'  
 #                 else: return 'showfocus("'+jlink+'", ('+box+'));'  
 #             return 'showjlink("'+jlink+'", ('+box+'));'  
 #         return ""  
           
      def target(jlink):  
          pass  
 #         """Returns target file of the jlink with  
 #         path from the current directory."""  
 #         ts = jlink.split(".")  
 #         if re.search("html", ts[-1]):  
 #             settings2 = settings.copy()  
 #             if settings.has_key('path') and settings.has_key('tmpdir') \  
 #                    and settings.has_key('name'):  
 #                 if (os.path.isfile(mputils._slashify(settings['tmpdir'])+settings['name']+".gen.refers")):  
 #                     refer_file = open(mputils._slashify(settings['tmpdir'])+settings['name']\  
 #                                       +".gen.refers", "r")  
 #                     #print "NEEDLE:", ts[-3].split("/")[-1]  
 #                     refers = refer_file.readlines()  
 #                     if len(refers) > 0 and \  
 #                            "".join([refer for refer in refers]).find(ts[-3].split("/")[-1]) == -1:  
 #                         tmp = mputils.transition_path(settings['path'], refers[0].replace(".rst", ".gen.html"))  
 #                         slash = tmp.rfind("/")  
 #                         if slash != -1:  
 #                             settings['to_context'] = (tmp[0:slash+1]).replace("//", "/")  
 #                             #print "REFERS:",refers  
 #                             #print "PATH:", settings['path']  
 #                             #print "JLINK:",jlink  
 #                             #print "TO_CONTEXT:", settings['to_context']  
 #                     refer_file.close()  
 #             if settings.has_key('to_context') and not \  
 #                 jlink.startswith(settings['to_context']):  
 #                 if settings['to_context'].endswith("/"):  
 #                     target = settings['to_context']+jlink  
 #                 else:  
 #                     target = settings['to_context']+"/"+jlink  
 #                 while target.startswith("/"):  
 #                     target = target[1:len(target)]  
 #             else: target = jlink  
 #             settings.restore(settings2)  
 #         elif re.match("^[a-z]", ts[-1]):  
 #             target = (settings['to_javadoc']+"/"\  
 #                       +"/".join(ts)  
 #                       + "/package-summary.html#package_description")  
 #         else:  
 #             target = (settings['to_javadoc']+"/"\  
 #                       +"/".join(ts)  
 #                       + ".html")  
 #         return target  

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26