def get_stack_items(macro, repo_data): f = macro.formatter p, url, div, br = f.paragraph, f.url, f.div, f.linebreak em, strong = f.emphasis, f.strong h, li, ul = f.heading, f.listitem, f.bullet_list text, rawHTML = f.text, f.rawHTML items = [] vcs_config = repo_data['vcs'] stacks = repo_data['stacks'] for name in sorted(stacks.iterkeys()): data = stacks[name] data['vcs'] = vcs_config['type'] # keys authors = data.get('authors', 'unknown') try: if type(authors) != unicode: authors = unicode(authors, 'utf-8') except UnicodeDecodeError: authors = '' license = data.get('license', 'unknown') description = data.get('description', '') try: if type(description) != unicode: description = unicode(description, 'utf-8') except UnicodeDecodeError: description = '' packages = data.get('packages', []) # filter out test packages packages = [s for s in packages if not s.startswith('test_')] packages.sort() package_links = [] for pkg in packages: package_links.append(wiki_url(macro, pkg)) # don't include vcs link for git/bzr/hg/etc... as URI cannot point # to stack directly in a DVCS, i.e. it's only useful for SVN # stacks. if vcs_config['type'] == 'svn': vcs_li = get_vcs_li(macro, data) else: vcs_li = '' stack_html = \ rawHTML('<a name="%s">'%(name))+\ h(1,3)+rawHTML(wiki_url(macro, name))+h(0,3)+\ p(1,id="package-info")+rawHTML(description)+p(0)+\ p(1,id="package-info")+ul(1)+\ li(1)+text("Author: "+authors)+li(0)+\ li(1)+text("License: "+license)+li(0)+\ li(1)+text("Packages: ")+rawHTML(", ".join(package_links))+li(0)+\ vcs_li+\ ul(0)+p(0) items.append(stack_html) return items
def get_nav(macro, stack_name, packages, distro=None): nav = '' strong, em, text = macro.formatter.strong, macro.formatter.emphasis, macro.formatter.text if not stack_name or stack_name == 'sandbox': # ignore sandbox and non-stacked packages return nav elif [stack_name] == packages: # unary stack header return nav # return nav+strong(1)+text(stack_name)+strong(0) distro_query = None if distro: distro_query = "distro=%s" % distro page_name = macro.formatter.page.page_name # create navigation elements for stack name if stack_name == page_name: top = strong(1) + text(stack_name) + strong(0) else: top = strong(1) + wiki_url(macro, stack_name, querystr=distro_query) + strong(0) # create navigation elements for packages packages = [s for s in packages if not s.startswith('test_')] packages.sort() parts = [] for pkg in packages: if pkg == 'catkin': continue if pkg == page_name: parts.append(text(pkg)) else: parts.append(wiki_url(macro, pkg, querystr=distro_query)) # assemble nav elements nav = nav + em(1) + top if parts: nav += text(': ') + parts[0] for part in parts[1:]: nav += text(' | ') + part nav += em(0) return nav
def get_dependency_list(macro, data, css_prefix='', distro=None): f = macro.formatter li, ul, strong, div = f.listitem, f.bullet_list, f.strong, f.div depends = data.get('depends', []) depends_on = data.get('depends_on', []) distro_query = None if distro: distro_query = "distro=%s" % distro links = '' if depends: depends.sort() links += ( strong(1) + '<a href="#" onClick="toggleExpandable(\'%sdependencies-list\'); return false;">' 'Dependencies' '</a> (%s)' % (css_prefix, len(depends)) + strong(0) + '<br />' + '<div id="%sdependencies-list" style="display:none">' % (css_prefix) + ul(1) ) for d in depends: links += li(1) + wiki_url(macro, d, shorten=20, querystr=distro_query, raw=True) + li(0) links += ul(0)+div(0) if depends_on: depends_on.sort() links += ( strong(1) + '<a href="#" onClick="toggleExpandable(\'%sused-by-list\'); return false;">' 'Used by' '</a> (%s)' % (css_prefix, len(depends_on)) + strong(0) + "<br />" + '<div id="%sused-by-list" style="display:none">' % (css_prefix) + ul(1)) for d in depends_on: links += li(1) + wiki_url(macro, d, shorten=20, querystr=distro_query, raw=True) + li(0) links += ul(0) + div(0) if links: links = '<script type="text/javascript" src="/custom/js/roswiki.js"></script>' + links return links
def get_nav(macro, stack_name, packages, distro=None): nav = '' strong, em, text = macro.formatter.strong, macro.formatter.emphasis, macro.formatter.text if not stack_name or stack_name == 'sandbox': # ignore sandbox and non-stacked packages return nav elif [stack_name] == packages: # unary stack header return nav # return nav+strong(1)+text(stack_name)+strong(0) distro_query = None if distro: distro_query = "distro=%s" % distro page_name = macro.formatter.page.page_name # create navigation elements for stack name if stack_name == page_name: top = strong(1)+text(stack_name)+strong(0) else: top = strong(1)+wiki_url(macro, stack_name, querystr=distro_query)+strong(0) # create navigation elements for packages packages = [s for s in packages if not s.startswith('test_')] packages.sort() parts = [] for pkg in packages: if pkg == 'catkin': continue if pkg == page_name: parts.append(text(pkg)) else: parts.append(wiki_url(macro, pkg, querystr=distro_query)) # assemble nav elements nav = nav + em(1) + top if parts: nav += text(': ')+parts[0] for part in parts[1:]: nav += text(' | ')+part nav += em(0) return nav
def get_dependency_list(macro, data, css_prefix="", distro=None): f = macro.formatter li, ul, strong, div = f.listitem, f.bullet_list, f.strong, f.div depends = data.get("depends", []) depends_on = data.get("depends_on", []) distro_query = None if distro: distro_query = "distro=%s" % distro links = "" if depends: depends.sort() links += ( strong(1) + '<a href="#" onClick="toggleExpandable(\'%sdependencies-list\');">Dependencies</a> (%s)' % (css_prefix, len(depends)) + strong(0) + "<br />" + '<div id="%sdependencies-list" style="display:none">' % (css_prefix) + ul(1) ) for d in depends: links += li(1) + wiki_url(macro, d, shorten=20, querystr=distro_query) + li(0) links += ul(0) + div(0) if depends_on: depends_on.sort() links += ( strong(1) + '<a href="#" onClick="toggleExpandable(\'%sused-by-list\');">Used by</a> (%s)' % (css_prefix, len(depends_on)) + strong(0) + "<br />" + '<div id="%sused-by-list" style="display:none">' % (css_prefix) + ul(1) ) for d in depends_on: links += li(1) + wiki_url(macro, d, shorten=20, querystr=distro_query) + li(0) links += ul(0) + div(0) return links
def get_nav(macro, stack_name, packages, distro=None): nav = '<script type="text/javascript" src="/js/roswiki.js"></script>' strong, em, text = macro.formatter.strong, macro.formatter.emphasis, macro.formatter.text if not stack_name or stack_name == "sandbox": # ignore sandbox and non-stacked packages return nav elif [stack_name] == packages: # unary stack header return nav # return nav+strong(1)+text(stack_name)+strong(0) distro_query = None if distro: distro_query = "distro=%s" % distro page_name = macro.formatter.page.page_name # create navigation elements for stack name if stack_name == page_name: top = strong(1) + text(stack_name) + strong(0) else: top = strong(1) + wiki_url(macro, stack_name, querystr=distro_query) + strong(0) # create navigation elements for packages packages = [s for s in packages if not s.startswith("test_")] packages.sort() parts = [] for pkg in packages: if pkg == page_name: parts.append(text(pkg)) else: parts.append(wiki_url(macro, pkg, querystr=distro_query)) # assemble nav elements nav = nav + em(1) + top if parts: nav += text(": ") + parts[0] for part in parts[1:]: nav += text(" | ") + part nav += em(0) return nav
license = data.get("license", "unknown") description = data.get("description", "") try: if type(description) != unicode: description = unicode(description, "utf-8") except UnicodeDecodeError: description = "" packages = data.get("packages", []) # filter out test packages packages = [s for s in packages if not s.startswith("test_")] packages.sort() package_links = [] for pkg in packages: package_links.append(wiki_url(macro, pkg)) # don't include vcs link for git/bzr/hg/etc... as URI cannot point # to stack directly in a DVCS, i.e. it's only useful for SVN # stacks. if vcs_config["type"] == "svn": # we strip this redundant tag from the stack data and have to reinsert vcs_li = get_vcs_li(macro, data) else: vcs_li = "" stack_html = ( rawHTML('<a name="%s">' % (stack_name)) + h(1, 3) + rawHTML(wiki_url(macro, stack_name)) + h(0, 3) + p(1, id="package-info")
license = data.get('license', 'unknown') description = data.get('description', '') try: if type(description) != unicode: description = unicode(description, 'utf-8') except UnicodeDecodeError: description = '' packages = data.get('packages', []) # filter out test packages packages = [s for s in packages if not s.startswith('test_')] packages.sort() package_links = [] for pkg in packages: package_links.append(wiki_url(macro, pkg)) # don't include vcs link for git/bzr/hg/etc... as URI cannot point # to stack directly in a DVCS, i.e. it's only useful for SVN # stacks. if vcs_config['type'] == 'svn': # we strip this redundant tag from the stack data and have to reinsert vcs_li = get_vcs_li(macro, data) else: vcs_li = '' stack_html = \ rawHTML('<a name="%s">'%(stack_name))+\ h(1,3)+rawHTML(wiki_url(macro, stack_name))+h(0,3)+\ p(1,id="package-info")+rawHTML(description)+p(0)+\ p(1,id="package-info")+ul(1)+\ li(1)+text("Author: "+authors)+li(0)+\
stack_items = get_stack_items(macro, repo_data) toc = '' # stack index stack_names = sorted(repo_data['stacks'].iterkeys()) if stack_names: toc += li(1) + text('Stacks') + ul(1) for name in sorted(stack_names): toc += li(1) + rawHTML('<a href="#%s">%s</a>' % (name, name)) + li(0) toc += ul(0) + li(0) package_names = sorted( repo_data['packages'].iterkeys()) if display_packages else [] if package_names: toc += li(1) + text('Packages') + ul(1) for name in package_names: toc += li(1) + wiki_url(macro, name) + li(0) toc += ul(0) + li(0) vcs_config = repo_data['vcs'] uri = vcs_config['uri'] repo_desc = h(1,2)+text(repo_name)+h(0,2)+\ ul(1)+\ li(1)+text('Version Control: %s '%(vcs_config['type']))+rawHTML('<a href="%s">%s</a>'%(uri, uri))+li(0)+\ toc+\ ul(0) return repo_desc + '\n'.join(stack_items)
text, rawHTML = f.text, f.rawHTML stack_items = get_stack_items(macro, repo_data) toc = '' # stack index stack_names = sorted(repo_data['stacks'].iterkeys()) if stack_names: toc += li(1)+text('Stacks')+ul(1) for name in sorted(stack_names): toc += li(1)+rawHTML('<a href="#%s">%s</a>'%(name, name))+li(0) toc += ul(0)+li(0) package_names = sorted(repo_data['packages'].iterkeys()) if display_packages else [] if package_names: toc += li(1)+text('Packages')+ul(1) for name in package_names: toc += li(1)+wiki_url(macro, name)+li(0) toc += ul(0)+li(0) vcs_config = repo_data['vcs'] uri = vcs_config['uri'] repo_desc = h(1,2)+text(repo_name)+h(0,2)+\ ul(1)+\ li(1)+text('Version Control: %s '%(vcs_config['type']))+rawHTML('<a href="%s">%s</a>'%(uri, uri))+li(0)+\ toc+\ ul(0) return repo_desc+'\n'.join(stack_items)