# HG changeset patch # User Paul Boddie # Date 1234225189 -3600 # Node ID c935e9f0e746f4046b101359773329d124173e59 # Parent 8615998f82503b5ae7b4d0eabf3055178bb6acd3 Prevent needless inspection of all categories. diff -r 8615998f8250 -r c935e9f0e746 README.txt --- a/README.txt Tue Feb 10 00:33:57 2009 +0100 +++ b/README.txt Tue Feb 10 01:19:49 2009 +0100 @@ -51,6 +51,11 @@ This ensures that the styles are made available to the browser. +Recommended Software +-------------------- + +http://moinmo.in/HelpOnXapian + Troubleshooting --------------- diff -r 8615998f8250 -r c935e9f0e746 macros/CategoryMenu.py --- a/macros/CategoryMenu.py Tue Feb 10 00:33:57 2009 +0100 +++ b/macros/CategoryMenu.py Tue Feb 10 01:19:49 2009 +0100 @@ -20,6 +20,10 @@ category_regexp = None +# From MoinMoin.search.queryparser... + +category_membership_regexp_str = r'(?m)(^-----*\s*\r?\n)(^##.*\r?\n)*^(?!##)(.*)\b%s\b' + # Utility functions. def isMoin15(): @@ -121,15 +125,14 @@ for category in categories: category_name, category_pagename = category - pages_in_category = getPages(category_pagename, request) - pagenames_in_category = [p.page_name for p in pages_in_category] page_is_category = page.page_name == category_pagename + category_membership_regexp = re.compile(category_membership_regexp_str % category_pagename) + page_in_category = category_membership_regexp.search(page.get_raw_body()) # Generate the submenu where appropriate. if selected_category_names and category_name in selected_category_names or \ - not selected_category_names and ( - page_is_category or page.page_name in pagenames_in_category): + not selected_category_names and (page_is_category or page_in_category): if page_is_category: output.append(fmt.listitem(on=1, attr={"class" : "selected current"})) @@ -142,6 +145,11 @@ output.append(fmt.bullet_list(on=1, attr={"class" : "category-submenu"})) + # Get the pages and page names in the category. + + pages_in_category = getPages(category_pagename, request) + pagenames_in_category = [p.page_name for p in pages_in_category] + # Visit each page in the category. last_parts = []