lib/page_tree.py
changeset 17 b538e1f7011c
parent 16 4a40718c7b4b
equal deleted inserted replaced
16:4a40718c7b4b 17:b538e1f7011c
     5 import tree_parse
     5 import tree_parse
     6 
     6 
     7 # path to file containing the page metadata tree
     7 # path to file containing the page metadata tree
     8 PAGE_TREE_FILE = "pages/list"
     8 PAGE_TREE_FILE = "pages/list"
     9 
     9 
       
    10 class PageTreeError (Exception) :
       
    11     """
       
    12         Error parsing/loading the page tree
       
    13     """
       
    14 
       
    15     pass
    10 
    16 
    11 class PageInfo (object) :
    17 class PageInfo (object) :
    12     """
    18     """
    13         Contains metainformation about a page
    19         Contains metainformation about a page
    14     """
    20     """
   116         """
   122         """
   117         
   123         
   118         # parse tree
   124         # parse tree
   119         tree = tree_parse.parse(path, ':')
   125         tree = tree_parse.parse(path, ':')
   120 
   126 
       
   127         if not tree :
       
   128             raise PageTreeError("No root node found")
       
   129 
   121         def _create_node (parent, item) :
   130         def _create_node (parent, item) :
   122             """
   131             """
   123                 Creates and returns a PageInfo from the given parent node and (line_number, line, children) tuple item
   132                 Creates and returns a PageInfo from the given parent node and (line_number, line, children) tuple item
   124             """
   133             """
   125 
   134 
   126             # unpack
   135             # unpack
   127             line_number, line, children = item
   136             line_number, line, children = item
   128 
   137             
   129             # parse line
   138             # parse line
   130             url, title = line.split(':')
   139             url = title = None
       
   140             
       
   141             try :
       
   142                 url, title = line.split(':')
       
   143 
       
   144             except :
       
   145                 raise PageTreeError("Invalid line: %s:%d: %r" % (path, line_number, line))
   131 
   146 
   132             # remove whitespace
   147             # remove whitespace
   133             url = url.strip()
   148             url = url.strip()
   134             title = title.strip()
   149             title = title.strip()
   135             
   150