def macro_StackHeader(macro, arg1, arg2=None): stack_name = get_unicode(macro.request, arg1) opt_distro = get_unicode(macro.request, arg2) if " " in stack_name: # something changed in the API such that the above arg1, arg2 passing no longer works splits = stack_name.split(" ") if len(splits) > 2: return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name opt_lang)]]" stack_name, lang = splits if not stack_name: return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name opt_lang)]]" if not opt_distro: headers_html = [] for distro in distro_names: if distro in ["boxturtle", "cturtle", "diamondback"]: stack_header_html = generate_old_stack_header(macro, stack_name, distro) else: stack_header_html = generate_package_header(macro, stack_name, distro) headers_html.append('<div class="version %s">' % distro + stack_header_html + "</div>") html = "\n".join([distro_html(distro, distro_names) for distro in distro_names]) return macro.formatter.rawHTML(html + "\n".join(headers_html)) else: if opt_distro in ["boxturtle", "cturtle", "diamondback"]: return generate_old_stack_header(macro, stack_name, opt_distro) else: return generate_package_header(macro, stack_name, opt_distro)
def macro_PackageHeader(macro, arg1, arg2=None): package_name = get_unicode(macro.request, arg1) opt_distro = get_unicode(macro.request, arg2) if not opt_distro: headers_html = [] loaded_distros = get_loaded_distros(package_name, distro_names) for distro in distro_names: if distro in ['boxturtle', 'cturtle', 'diamondback']: pkg_header_html = generate_old_package_header( macro, package_name, distro) else: pkg_header_html = generate_package_header( macro, package_name, distro) headers_html.append('<div class="version %s">' % distro + pkg_header_html + '</div>') html = "\n".join([ distro_html(distro, loaded_distros) for distro in distro_names ]) + doc_html(distro_names, package_name) return macro.formatter.rawHTML(html + "\n".join(headers_html)) else: if opt_distro in ['boxturtle', 'cturtle', 'diamondback']: return generate_old_package_header(macro, package_name, opt_distro) else: return generate_package_header(macro, package_name, opt_distro)
def macro_StackHeader(macro, arg1, arg2=None): stack_name = get_unicode(macro.request, arg1) opt_distro = get_unicode(macro.request, arg2) if ' ' in stack_name: #something changed in the API such that the above arg1, arg2 passing no longer works splits = stack_name.split(' ') if len(splits) > 2: return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name opt_lang)]]" stack_name, lang = splits if not stack_name: return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name opt_lang)]]" if not opt_distro: headers_html = [] loaded_distros = get_loaded_distros(stack_name, distro_names) for distro in distro_names: if distro in ['boxturtle', 'cturtle', 'diamondback']: stack_header_html = generate_old_stack_header(macro, stack_name, distro) else: stack_header_html = generate_package_header(macro, stack_name, distro) headers_html.append('<div class="version %s">' % distro + stack_header_html + '</div>') html = "\n".join([distro_html(distro, loaded_distros) for distro in distro_names]) + doc_html(distro_names, stack_name) return macro.formatter.rawHTML(html + "\n".join(headers_html)) else: if opt_distro in ['boxturtle', 'cturtle', 'diamondback']: return generate_old_stack_header(macro, stack_name, opt_distro) else: return generate_package_header(macro, stack_name, opt_distro)
def macro_StackHeader(macro, arg1, arg2=None): stack_name = get_unicode(macro.request, arg1) opt_distro = get_unicode(macro.request, arg2) if ' ' in stack_name: #something changed in the API such that the above arg1, arg2 passing no longer works splits = stack_name.split(' ') if len(splits) > 2: return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name opt_lang)]]" stack_name, lang = splits if not stack_name: return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name opt_lang)]]" if not opt_distro: headers_html = [] loaded_distros = get_loaded_distros(stack_name, distro_names) for distro in distro_names: if distro in ['boxturtle', 'cturtle', 'diamondback']: stack_header_html = generate_old_stack_header(macro, stack_name, distro) else: stack_header_html = generate_package_header(macro, stack_name, distro) headers_html.append('<div class="version %s">' % distro + stack_header_html + '</div>') html = '<span id="rosversion_selector" class="btn-group">\n' html += "\n".join([distro_html(distro, loaded_distros) for distro in distro_names]) html += '\n</span>' html += doc_html(distro_names, stack_name) return macro.formatter.rawHTML(html + "\n".join(headers_html)) else: if opt_distro in ['boxturtle', 'cturtle', 'diamondback']: return generate_old_stack_header(macro, stack_name, opt_distro) else: return generate_package_header(macro, stack_name, opt_distro)
def macro_PackageMetrics(macro, arg1, arg2='ja'): stack_name = get_unicode(macro.request, arg1) lang = get_unicode(macro.request, arg2) if ' ' in stack_name: #something changed in the API such that the above arg1, arg2 passing no longer works splits = stack_name.split(' ') if len(splits) > 2: return "ERROR in StackCodeQuality. Usage: [[StackHeader(stack_name opt_lang)]]" stack_name, lang = splits if not stack_name: return "ERROR in StackCodeQuality. Usage: [[StackCodeQuality(stack_name opt_lang)]]" f = macro.formatter p, div, li, ul = f.paragraph, f.div, f.listitem, f.bullet_list h, text, rawHTML = f.heading, f.text, f.rawHTML desc = '' # Common Information try: data = load_stack_code_quality(stack_name, lang) except UtilException, e: name = stack_name return e
def macro_StackMetrics(macro, arg1, arg2='groovy', arg3='ja'): stack_name = get_unicode(macro.request, arg1) rosdistro = get_unicode(macro.request, arg2) lang = get_unicode(macro.request, arg3) if ' ' in stack_name: #something changed in the API such that the above arg1, arg2 passing no longer works splits = stack_name.split(' ') if len(splits) > 3: return "ERROR in StackCodeQuality. Usage: [[StackHeader(stack_name opt_rosdistro opt_lang)]]" elif len(splits) == 3: stack_name, rosdistro, lang = splits elif len(splits) == 2: stack_name, rosdistro = splits if not stack_name: return "ERROR in StackCodeQuality. Usage: [[StackCodeQuality(stack_name opt_rosdistro opt_lang)]]" f = macro.formatter p, div, li, ul = f.paragraph, f.div, f.listitem, f.bullet_list h, text, rawHTML = f.heading, f.text, f.rawHTML desc = '' # Common Information try: data = load_stack_code_quality(stack_name, rosdistro, lang) except UtilException, e: name = stack_name return str(e)
def macro_StackHeader(macro, arg1, arg2=None): stack_name = get_unicode(macro.request, arg1) opt_distro = get_unicode(macro.request, arg2) if ' ' in stack_name: #something changed in the API such that the above arg1, arg2 passing no longer works splits = stack_name.split(' ') if len(splits) > 2: return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name opt_lang)]]" stack_name, lang = splits if not stack_name: return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name opt_lang)]]" if not opt_distro: headers_html = [] loaded_distros = get_loaded_distros(stack_name, distro_names_buildfarm) loaded_distros_eol = [ distro for distro in loaded_distros if distro in distro_names_eol ] loaded_distros_buildfarm = [ distro for distro in loaded_distros if distro in distro_names_buildfarm ] for distro in loaded_distros: if distro in ['boxturtle', 'cturtle', 'diamondback']: stack_header_html = generate_old_stack_header( macro, stack_name, distro) else: stack_header_html = generate_package_header( macro, stack_name, distro) headers_html.append('<div class="version %s">' % distro + stack_header_html + '</div>') html = '' if loaded_distros_buildfarm: if loaded_distros_eol: html += distro_selector_with_eol_toggle_html( distros_displayed_by_default=loaded_distros_buildfarm, distros_hidden_by_default=loaded_distros_eol, ) else: # Only active distros available: don't show EOL toggle. html += distro_selector_html( distros_displayed=loaded_distros_buildfarm, ) else: if loaded_distros_eol: # Only EOL distros available: don't show EOL toggle. html += ('<span style="text-align:left">' '<i>Only released in EOL distros:</i>' ' ' '</span>') html += distro_selector_html( distros_displayed=loaded_distros_eol, ) html += doc_html(loaded_distros, stack_name) return macro.formatter.rawHTML(html + "\n".join(headers_html)) else: if opt_distro in ['boxturtle', 'cturtle', 'diamondback']: return generate_old_stack_header(macro, stack_name, opt_distro) else: return generate_package_header(macro, stack_name, opt_distro)
def macro_GetVal(self, page=None, key=None): page = wikiutil.get_unicode(self.request, page, 'page') if not self.request.user.may.read(page): raise ValueError("You don't have enough rights on this page") key = wikiutil.get_unicode(self.request, key, 'key') if page is None or key is None: raise ValueError("You need to give: pagename, key") d = self.request.dicts.dict(page) result = d.get(key, '') return self.formatter.text(result)
def macro_PackageHeader2(macro, arg1, arg2='en'): package_name = get_unicode(macro.request, arg1) lang = get_unicode(macro.request, arg2) if not package_name: return "ERROR in PackageHeader. Usage: [[PackageHeader(package_name opt_lang)]]" try: data = load_package_manifest(package_name, lang) except UtilException, e: name = package_name return CONTRIBUTE_TMPL%locals()
def macro_PackageHeader(macro, arg1, arg2=None): package_name = get_unicode(macro.request, arg1) opt_distro = get_unicode(macro.request, arg2) if not opt_distro: headers_html = [] loaded_distros = get_loaded_distros(package_name, distro_names) loaded_distros_eol = [ distro for distro in loaded_distros if distro in distro_names_eol ] loaded_distros_buildfarm = [ distro for distro in loaded_distros if distro in distro_names_buildfarm ] for distro in loaded_distros: if distro in ['boxturtle', 'cturtle', 'diamondback']: pkg_header_html = generate_old_package_header( macro, package_name, distro) else: pkg_header_html = generate_package_header( macro, package_name, distro) headers_html.append('<div class="version %s">' % distro + pkg_header_html + '</div>') html = '' if loaded_distros_buildfarm: if loaded_distros_eol: html += distro_selector_with_eol_toggle_html( distros_displayed_by_default=loaded_distros_buildfarm, distros_hidden_by_default=loaded_distros_eol, ) else: # Only active distros available: don't show EOL toggle. html += distro_selector_html( distros_displayed=loaded_distros_buildfarm, ) else: if loaded_distros_eol: # Only EOL distros available: don't show EOL toggle. html += ('<span style="text-align:left">' '<i>Only released in EOL distros:</i>' ' ' '</span>') html += distro_selector_html( distros_displayed=loaded_distros_eol, ) html += doc_html(loaded_distros, package_name) return macro.formatter.rawHTML(html + "\n".join(headers_html)) else: if opt_distro in ['boxturtle', 'cturtle', 'diamondback']: return generate_old_package_header(macro, package_name, opt_distro) else: return generate_package_header(macro, package_name, opt_distro)
def execute(macro, args): _ = macro._ case = 0 # If called with empty or no argument, default to regex search for .+, the full page list. needle = wikiutil.get_unicode(macro.request, args, 'needle', u'regex:.+') # With whitespace argument, return same error message as FullSearch if not needle.strip(): err = _( 'Please use a more selective search term instead of {{{"%s"}}}', wiki=True) % needle return '<span class="error">%s</span>' % err # Return a title search for needle, sorted by name. try: results = search.searchPages(macro.request, needle, titlesearch=1, case=case, sort='page_name') ret = results.pageList(macro.request, macro.formatter, paging=False) except ValueError: # same error as in MoinMoin/action/fullsearch.py, keep it that way! ret = ''.join([ macro.formatter.text('<<PageList('), _( 'Your search query {{{"%s"}}} is invalid. Please refer to ' 'HelpOnSearching for more information.', wiki=True, percent=True) % wikiutil.escape(needle), macro.formatter.text(')>>') ]) return ret
def execute(macro, args): _ = macro._ case = 0 # If called with empty or no argument, default to regex search for .+, the full page list. needle = wikiutil.get_unicode(macro.request, args, 'needle', u'regex:.+') # With whitespace argument, return same error message as FullSearch if not needle.strip(): err = _('Please use a more selective search term instead of {{{"%s"}}}', wiki=True) % needle return '<span class="error">%s</span>' % err needle = needle.strip() # Return a title search for needle, sorted by name. try: results = search.searchPages(macro.request, needle, titlesearch=1, case=case, sort='page_name') fmt = macro.formatter.__class__(macro.request, is_included=True) fmt._base_depth = macro.formatter._base_depth ret = results.pageList(macro.request, fmt, paging=False,excluded=macro.formatter.page.getPageLinks(macro.request)) except ValueError: # same error as in MoinMoin/action/fullsearch.py, keep it that way! ret = ''.join([macro.formatter.text('<<PageList('), _('Your search query {{{"%s"}}} is invalid. Please refer to ' 'HelpOnSearching for more information.', wiki=True, percent=True) % wikiutil.escape(needle), macro.formatter.text(')>>')]) return ret
def execute(macro, args): _ = macro._ case = 0 # If called with empty or no argument, default to regex search for .+, the full page list. needle = wikiutil.get_unicode(macro.request, args, "needle", u"regex:.+") # With whitespace argument, return same error message as FullSearch if not needle.strip(): err = _('Please use a more selective search term instead of {{{"%s"}}}', wiki=True) % needle return '<span class="error">%s</span>' % err # Return a title search for needle, sorted by name. try: results = search.searchPages(macro.request, needle, titlesearch=1, case=case, sort="page_name") ret = results.pageList(macro.request, macro.formatter, paging=False) except ValueError: # same error as in MoinMoin/action/fullsearch.py, keep it that way! ret = "".join( [ macro.formatter.text("<<PageList("), _( 'Your search query {{{"%s"}}} is invalid. Please refer to ' "HelpOnSearching for more information.", wiki=True, percent=True, ) % wikiutil.escape(needle), macro.formatter.text(")>>"), ] ) return ret
def macro_TestHeader(macro, arg1): package_name = get_unicode(macro.request, arg1) h = macro.formatter.heading text = macro.formatter.text return h(1, 2, id="test") + text("Is this thing on?") + h(0, 2)
def macro_DisqusThread(macro, username='******'): username = get_unicode(macro.request, username) username = re.sub(r'<[^>]*?>', '', username) # dirty solution from http://stackoverflow.com/questions/2295942/pythons-equivalent-to-phps-strip-tags try: return macro.formatter.rawHTML(embed_code % ({'username': username})) except: return macro.formatter.escapedText('Error inserting Disqus code')
def macro_GetVal(self, page=None, key=None): page = wikiutil.get_unicode(self.request, page, 'page') key = wikiutil.get_unicode(self.request, key, 'key') if page is None or key is None: raise ValueError("You need to give: pagename, key") d = self.request.dicts.get(page, {}) # Check acl only if dictionary is defined on a wiki page. if isinstance(d, WikiDict) and not self.request.user.may.read(page): raise ValueError("You don't have enough rights on this page") result = d.get(key, '') return self.formatter.text(result)
def macro_TestHeader(macro, arg1): package_name = get_unicode(macro.request, arg1) h = macro.formatter.heading text = macro.formatter.text return h(1, 2, id="test")+text('Is this thing on?')+h(0,2)
def macro_GetVal(self, page=None, key=None): page = wikiutil.get_unicode(self.request, page, "page") key = wikiutil.get_unicode(self.request, key, "key") if page is None or key is None: raise ValueError("You need to give: pagename, key") d = self.request.dicts.get(page, {}) # Check acl only if dictionary is defined on a wiki page. if isinstance(d, WikiDict) and not self.request.user.may.read(page): raise ValueError("You don't have enough rights on this page") result = d.get(key, "") return self.formatter.text(result)
def getPageListFromSearch (request,args): # If called with empty or no argument, default to regex search for .+, the full page list. needle = wikiutil.get_unicode(request, args, 'needle', u'regex:.+') # With whitespace argument, return same error message as FullSearch #if not needle.strip(): # err = 'Please use a more selective search term instead of {{{"%s"}}}' % needle # return '<span class="error">%s</span>' % err # Return a title search for needle, sorted by name. try: results = search.searchPages(request, needle, titlesearch=1, case=0, sort='page_name') pages = results.hits#pageList(macro.request, macro.formatter, paging=False) pages = map(lambda x:x.page_name, pages) except ValueError: # same error as in MoinMoin/action/fullsearch.py, keep it that way! """ ret = ''.join([macro.formatter.text('<<PageList('), _('Your search query {{{"%s"}}} is invalid. Please refer to ' 'HelpOnSearching for more information.', wiki=True, percent=True) % wikiutil.escape(needle), macro.formatter.text(')>>')]) """ pages = [] return pages
def macro_PackageHeader(macro, arg1, arg2=None): package_name = get_unicode(macro.request, arg1) opt_distro = get_unicode(macro.request, arg2) if not package_name: return "ERROR in PackageHeader. Usage: [[PackageHeader(package_name opt_distro)]]" if ' ' in package_name: #something changed in the API such that the above arg1, arg2 passing no longer works splits = package_name.split(' ') if len(splits) > 2: return "ERROR in PackageHeader. Usage: [[PackageHeader(pkg_name opt_distro)]]" package_name, distro = splits try: data = load_package_manifest(package_name, opt_distro) except UtilException, e: name = package_name return CONTRIBUTE_TMPL%locals()
def macro_PackageHeader(macro, arg1, arg2=None): package_name = get_unicode(macro.request, arg1) opt_distro = get_unicode(macro.request, arg2) if not package_name: return "ERROR in PackageHeader. Usage: [[PackageHeader(package_name opt_distro)]]" if ' ' in package_name: #something changed in the API such that the above arg1, arg2 passing no longer works splits = package_name.split(' ') if len(splits) > 2: return "ERROR in PackageHeader. Usage: [[PackageHeader(pkg_name opt_distro)]]" package_name, distro = splits try: data = load_package_manifest(package_name, opt_distro) except UtilException, e: name = package_name return CONTRIBUTE_TMPL % locals()
def macro_RepoHeader(macro, arg1): repo_name = get_unicode(macro.request, arg1) if not repo_name: return "ERROR in RepoHeader. Usage: [[RepoHeader(repo_name)]]" try: repo_data = load_repo_manifest(repo_name) except UtilException, e: return str(e)
def macro_StackCodeQuality(macro, arg1, arg2='ja'): stack_name = get_unicode(macro.request, arg1) lang = get_unicode(macro.request, arg2) if ' ' in stack_name: #something changed in the API such that the above arg1, arg2 passing no longer works splits = stack_name.split(' ') if len(splits) > 2: return "ERROR in StackCodeQuality. Usage: [[StackHeader(stack_name opt_lang)]]" stack_name, lang = splits if not stack_name: return "ERROR in StackCodeQuality. Usage: [[StackCodeQuality(stack_name opt_lang)]]" try: data = load_stack_code_quality(stack_name, lang) except UtilException, e: name = stack_name return e
def execute(macro, args): _ = macro._ case = 0 # If called with empty or no argument, default to regex search for .+, the full page list. needle = wikiutil.get_unicode(macro.request, args, 'needle', u'regex:.+') return fs_execute(macro, needle, titlesearch=True, case=case)
def parseargs(request, args, defpagename, defyear, defmonth, defoffset, defoffset2, defheight6, defanniversary, deftemplate): """ parse macro arguments """ args = wikiutil.parse_quoted_separated(args, name_value=False) args += [None] * 8 # fill up with None to trigger defaults parmpagename, parmyear, parmmonth, parmoffset, parmoffset2, parmheight6, parmanniversary, parmtemplate = args[:8] parmpagename = wikiutil.get_unicode(request, parmpagename, 'pagename', defpagename) parmyear = wikiutil.get_int(request, parmyear, 'year', defyear) parmmonth = wikiutil.get_int(request, parmmonth, 'month', defmonth) parmoffset = wikiutil.get_int(request, parmoffset, 'offset', defoffset) parmoffset2 = wikiutil.get_int(request, parmoffset2, 'offset2', defoffset2) parmheight6 = wikiutil.get_bool(request, parmheight6, 'height6', defheight6) parmanniversary = wikiutil.get_bool(request, parmanniversary, 'anniversary', defanniversary) parmtemplate = wikiutil.get_unicode(request, parmtemplate, 'template', deftemplate) # multiple pagenames separated by "*" - split into list of pagenames parmpagename = re.split(r'\*', parmpagename) return parmpagename, parmyear, parmmonth, parmoffset, parmoffset2, parmheight6, parmanniversary, parmtemplate
def macro_PackageHeader(macro, arg1, arg2=None): package_name = get_unicode(macro.request, arg1) opt_distro = get_unicode(macro.request, arg2) if not opt_distro: headers_html = [] for distro in distro_names: if distro in ['boxturtle', 'cturtle', 'diamondback']: pkg_header_html = generate_old_package_header(macro, package_name, distro) else: pkg_header_html = generate_package_header(macro, package_name, distro) headers_html.append('<div class="version %s">' % distro + pkg_header_html + '</div>') html = "\n".join([distro_html(distro, distro_names) for distro in distro_names]) return macro.formatter.rawHTML(html + "\n".join(headers_html)) else: if opt_distro in ['boxturtle', 'cturtle', 'diamondback']: return generate_old_package_header(macro, package_name, opt_distro) else: return generate_package_header(macro, package_name, opt_distro)
def macro_StackReleases(macro, arg1): stack_name = get_unicode(macro.request, arg1) if not stack_name: return "ERROR in StackReleases. Usage: [[StackReleases(stack_name)]]" if '/Releases' in stack_name: stack_name = stack_name[:-len('/Releases')] try: data = load_stack_manifest(stack_name) except UtilException, e: return str(e)
def macro_PackageHeader(macro, arg1, arg2=None): package_name = get_unicode(macro.request, arg1) opt_distro = get_unicode(macro.request, arg2) if not opt_distro: headers_html = [] loaded_distros = get_loaded_distros(package_name, distro_names) for distro in distro_names: if distro in ['boxturtle', 'cturtle', 'diamondback']: pkg_header_html = generate_old_package_header(macro, package_name, distro) else: pkg_header_html = generate_package_header(macro, package_name, distro) headers_html.append('<div class="version %s">' % distro + pkg_header_html + '</div>') html = '<span id="rosversion_selector" class="btn-group">\n' html += "\n".join([distro_html(distro, loaded_distros) for distro in distro_names]) html += '\n</span>' html += doc_html(distro_names, package_name) return macro.formatter.rawHTML(html + "\n".join(headers_html)) else: if opt_distro in ['boxturtle', 'cturtle', 'diamondback']: return generate_old_package_header(macro, package_name, opt_distro) else: return generate_package_header(macro, package_name, opt_distro)
def testGetUnicode(self): tests = [ # default testing for None value (None, None, None, None), (None, None, u'', u''), (None, None, u'abc', u'abc'), # some real values (u'', None, None, u''), (u'abc', None, None, u'abc'), (u'"abc"', None, None, u'"abc"'), ] for arg, name, default, expected in tests: assert wikiutil.get_unicode(self.request, arg, name, default) == expected
def macro_StackNavi(macro, arg1): stack_name = get_unicode(macro.request, arg1) try: import yaml except: return 'python-yaml is not installed on the wiki. Please have an admin install on this machine' if not stack_name: return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name)]]" try: data = load_stack_manifest(stack_name) except UtilException, e: return str(e)
def parseargs(request, args, defpagename, defyear, defmonth, defoffset, defoffset2, defheight6, defanniversary, deftemplate): """ parse macro arguments """ args = wikiutil.parse_quoted_separated(args, name_value=False) args += [None] * 8 # fill up with None to trigger defaults parmpagename, parmyear, parmmonth, parmoffset, parmoffset2, parmheight6, parmanniversary, parmtemplate = args[: 8] parmpagename = wikiutil.get_unicode(request, parmpagename, 'pagename', defpagename) parmyear = wikiutil.get_int(request, parmyear, 'year', defyear) parmmonth = wikiutil.get_int(request, parmmonth, 'month', defmonth) parmoffset = wikiutil.get_int(request, parmoffset, 'offset', defoffset) parmoffset2 = wikiutil.get_int(request, parmoffset2, 'offset2', defoffset2) parmheight6 = wikiutil.get_bool(request, parmheight6, 'height6', defheight6) parmanniversary = wikiutil.get_bool(request, parmanniversary, 'anniversary', defanniversary) parmtemplate = wikiutil.get_unicode(request, parmtemplate, 'template', deftemplate) # multiple pagenames separated by "*" - split into list of pagenames parmpagename = re.split(r'\*', parmpagename) return parmpagename, parmyear, parmmonth, parmoffset, parmoffset2, parmheight6, parmanniversary, parmtemplate
def macro_RepoHeader(macro, args): if ',' in args: args = args.split(',') else: args = args.split() if not args: return "ERROR in RepoHeader. Usage: [[RepoHeader(repo_name [packages stacks])]]" repo_name = get_unicode(macro.request, args[0]) if not repo_name: return "ERROR in RepoHeader. Usage: [[RepoHeader(repo_name [packages stacks])]]" try: repo_data = load_repo_manifest(repo_name) except UtilException, e: name = repo_name return CONTRIBUTE_TMPL%locals()
def macro_RepoHeader(macro, args): if ',' in args: args = args.split(',') else: args = args.split() if not args: return "ERROR in RepoHeader. Usage: [[RepoHeader(repo_name [packages stacks])]]" repo_name = get_unicode(macro.request, args[0]) if not repo_name: return "ERROR in RepoHeader. Usage: [[RepoHeader(repo_name [packages stacks])]]" try: repo_data = load_repo_manifest(repo_name) except UtilException, e: name = repo_name return CONTRIBUTE_TMPL % locals()
def macro_PageCount(macro, exists=None): """ Return number of pages readable by current user Return either an exact count (slow!) or fast count including deleted pages. TODO: make macro syntax more sane """ request = macro.request exists = wikiutil.get_unicode(request, exists, 'exists') # Check input only_existing = False if exists == u'exists': only_existing = True elif exists: raise ValueError("Wrong argument: %r" % exists) count = request.rootpage.getPageCount(exists=only_existing) return macro.formatter.text("%d" % count)
def macro_PageCount(macro, exists=None): """ Return number of pages readable by current user Return either an exact count (slow!) or fast count including deleted pages. TODO: make macro syntax more sane """ request = macro.request exists = wikiutil.get_unicode(request, exists, "exists") # Check input only_existing = False if exists == u"exists": only_existing = True elif exists: raise ValueError("Wrong argument: %r" % exists) count = request.rootpage.getPageCount(exists=only_existing) return macro.formatter.text("%d" % count)
def macro_MsgSrvDoc(macro, arg1, arg2='true'): package_name = get_unicode(macro.request, arg1) print_title=(get_unicode(macro.request, arg2) or 'true') == 'true' package_url = None try: import yaml except: return 'python-yaml is not installed on the wiki. Please have an admin install on this machine' if not package_name: return "ERROR in MsgSrvDoc. Usage: [[MsgSrvDoc(pkg_name)]]" package_url = package_html_link(package_name) url = package_link(package_name) + "/manifest.yaml" try: usock = urllib2.urlopen(url) ydata = usock.read() usock.close() except: return 'Newly proposed, mistyped, or obsolete package. Could not find package "' + args + '" in rosdoc: '+url m = yaml.load(unicode(ydata, 'utf-8')) if not m or type(m) != dict: return "Unable to retrieve package data. Auto-generated documentation may need to regenerate" # - package data keys msgs = m.get('msgs', []) srvs = m.get('srvs', []) p = macro.formatter.paragraph url = macro.formatter.url div = macro.formatter.div em = macro.formatter.emphasis br = macro.formatter.linebreak strong = macro.formatter.strong li = macro.formatter.listitem ul = macro.formatter.bullet_list h = macro.formatter.heading text = macro.formatter.text table = macro.formatter.table tr = macro.formatter.table_row td = macro.formatter.table_cell rawHTML = macro.formatter.rawHTML # table of msgs/srvs msg_str = text('') if msgs or srvs: if print_title: if msgs and srvs: msg_str += h(1, 2, id="msg-types")+text('ROS Message and Service Types')+h(0,2) elif msgs: msg_str += h(1, 2, id="msg-types")+text('ROS Message Types')+h(0,2) elif srvs: msg_str += h(1, 2, id="msg-types")+text('ROS Service Types')+h(0,2) msg_str += table(1) if msgs and srvs: msg_str += tr(1)+td(1)+strong(1)+text('ROS Message Types')+strong(0)+td(0) msg_str += td(1)+strong(1)+text('ROS Service Types')+strong(0)+td(0)+tr(0) msg_str += tr(1) if msgs: msg_str += rawHTML('<td valign="top">') for m in msgs: msg_str += msg_link(package_url, m)+rawHTML('<br />') msg_str += td(0) if srvs: msg_str += rawHTML('<td valign="top">') for s in srvs: msg_str += srv_link(package_url, s)+rawHTML('<br />') msg_str += td(0) msg_str += tr(0)+table(0) return msg_str
def macro_PackageHeader(macro, arg1): package_name = get_unicode(macro.request, arg1) package_url = None try: import yaml except: return 'python-yaml is not installed on the wiki. Please have an admin install on this machine' if not package_name: return "ERROR in PackageHeader. Usage: [[PackageHeader(pkg_name)]]" package_url = package_html_link(package_name) url = package_link(package_name) + "/manifest.yaml" try: usock = urllib2.urlopen(url) data = usock.read() usock.close() except: return 'Newly proposed, mistyped, or obsolete package. Could not find package "' + package_name + '" in rosdoc: '+url data = yaml.load(unicode(data, 'utf-8')) if not data: return "Unable to retrieve package data. Auto-generated documentation may need to regenerate" # keys # - manifest keys brief = data.get('brief', package_name) 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 = '' depends = data.get('depends', []) depends_on = data.get('depends_on', []) review_status = data.get('review_status', 'unreviewed') review_notes = data.get('review_notes', '') or '' external_documentation = data.get('external_documentation', '') or data.get('url', '') or '' if 'ros.org' in external_documentation or 'pr.willowgarage.com' in external_documentation: external_documentation = u'' api_documentation = data.get('api_documentation', '') repository = data.get('repository', 'unknown') stack = data.get('stack', None) p = macro.formatter.paragraph url = macro.formatter.url div = macro.formatter.div em = macro.formatter.emphasis br = macro.formatter.linebreak strong = macro.formatter.strong li = macro.formatter.listitem ul = macro.formatter.bullet_list h = macro.formatter.heading text = macro.formatter.text rawHTML = macro.formatter.rawHTML comment = macro.formatter.comment if stack and stack.lower() not in ['ros', 'sandbox']: # set() logic is to get around temporary bug siblings = list(set(data.get('siblings', []))) # filter out test packages siblings = [s for s in siblings if not s.startswith('test_')] siblings.sort() pagename = macro.formatter.page.page_name if stack == pagename: top = strong(1)+text(stack)+strong(0) else: top = strong(1)+wiki_url(macro, stack)+strong(0)+text(': ') parts = [] for s in siblings: if s == pagename: parts.append(text(s)) else: parts.append(wiki_url(macro, s)) #nav = em(1) + top + ' | '.join(parts) + em(0) nav = em(1) + top if parts: nav += parts[0] for part in parts[1:]: nav += text(' | ')+part nav += em(0) elif stack and stack.lower() == 'sandbox': nav = strong(1)+wiki_url(macro, stack)+strong(0) else: nav = text('') # - package data keys msgs = data.get('msgs', []) srvs = data.get('srvs', []) # - package links # -- link to msg/srv autogenerated docs msg_doc_title = "Msg/Srv API" if msgs and not srvs: msg_doc_title = "Msg API" elif srvs and not msgs: msg_doc_title = "Srv API" if msgs or srvs: msg_doc = li(1)+strong(1)+msg_doc_link(package_url, msg_doc_title)+strong(0)+li(0) else: msg_doc = text('') troubleshooting = Page(macro.request, '%s/Troubleshooting'%package_name).link_to(macro.request, text='Troubleshooting') tutorials = Page(macro.request, '%s/Tutorials'%package_name).link_to(macro.request, text='Tutorials') review_link = Page(macro.request, '%s/Reviews'%package_name).link_to(macro.request, text='Reviews') review_str = '%(review_link)s (%(review_status)s)'%locals() dependency_tree = data.get('dependency_tree', '') if external_documentation: external_documentation = li(1)+strong(1)+url(1, url=external_documentation)+text("External Documentation")+url(0)+strong(0)+li(0) try: package_desc = h(1, 2, id="first")+text('Package Summary')+h(0, 2)+\ p(1, css_id="package-info")+rawHTML(description)+p(0)+\ p(1, id="package-info")+\ ul(1)+li(1)+text("Author: %s"%authors)+li(0)+\ li(1)+text("License: %s"%license)+li(0)+\ li(1)+text("Repository: %s"%repository)+li(0)+ul(0)+p(0) if package_name: repo_change =True page= Page(macro.request, package_name) pageeditor=PageEditor(macro.request, package_name) savetext = page.get_raw_body() lines = savetext.splitlines() #lines = [line.strip() for line in lines] for line in lines: if line.startswith('## repository: %s'%repository): repo_change=False if repo_change ==True: lines = [line for line in lines if not line.startswith('## repository:')] savetext = u"## repository: %s\n%s" % (repository, "\n".join(lines)) pageeditor.saveText(savetext, 0, action='SAVE', notify=False) except UnicodeDecodeError: package_desc = h(1, 2)+text('Package Summary')+h(0, 2)+\ p(1)+text('Error retrieving package summary')+p(0) try: package_links = div(1, id="package-links")+\ strong(1)+text("Package Links")+strong(0)+\ ul(1)+\ li(1)+strong(1)+url(1, url=package_url)+text("Code API")+url(0)+strong(0)+li(0)+msg_doc+\ external_documentation+\ li(1)+tutorials+li(0)+\ li(1)+troubleshooting+li(0)+\ li(1)+review_str+li(0)+\ li(1)+url(1, url=dependency_tree)+text('Dependency Tree')+url(0)+li(0)+\ ul(0) except UnicodeDecodeError: package_links = div(1, id="package-links")+div(0) if depends: depends.sort() package_links += strong(1)+text("Dependencies")+strong(0)+ul(1) for d in depends: package_links += li(1)+wiki_url(macro,d,shorten=20)+li(0) package_links += ul(0) if depends_on: depends_on.sort() d_links = u'\n'.join([u"<li>%s</li>"%wiki_url(macro,d,shorten=20) for d in depends_on]) package_links += strong(1)+text("Used by")+strong(0)+ul(1)+rawHTML(d_links)+ul(0) package_links+=div(0) #html_str = u''.join([s for s in [nav, package_links, package_desc]]) #return html_str return rawHTML(nav) + package_links + package_desc
def macro_StackHeader(macro, arg1): stack_name = get_unicode(macro.request, arg1) stack_url = None try: import yaml except: return 'python-yaml is not installed on the wiki. Please have an admin install on this machine' if not stack_name: return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name)]]" stack_url = stack_html_link(stack_name) url = stack_link(stack_name) + "/stack.yaml" try: usock = urllib2.urlopen(url) ydata = usock.read() usock.close() except: return 'Newly proposed, mistyped, or obsolete stack. Could not find "' + stack_name + '" in rosdoc: '+url data = yaml.load(ydata) if not data or type(data) != dict: return "Unable to retrieve stack data. Auto-generated documentation may need to regenerate: "+str(url) # keys # - manifest keys brief = data.get('brief', stack_name) 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 = '' depends = data.get('depends', []) depends_on = data.get('depends_on', []) review_status = data.get('review_status', 'unreviewed') review_notes = data.get('review_notes', '') or '' # set() logic is to get around temporary bug packages = list(set(data.get('packages', []))) # filter out test packages packages = [s for s in packages if not s.startswith('test_')] packages.sort() p = macro.formatter.paragraph url = macro.formatter.url div = macro.formatter.div em = macro.formatter.emphasis br = macro.formatter.linebreak strong = macro.formatter.strong li = macro.formatter.listitem ul = macro.formatter.bullet_list h = macro.formatter.heading text = macro.formatter.text rawHTML = macro.formatter.rawHTML top = strong(1)+text(stack_name)+strong(0) parts = [] for pkg in packages: parts.append(wiki_url(macro, pkg)) if stack_name.lower() != 'sandbox': nav = em(1) + top if parts: nav += text(': ')+parts[0] for part in parts[1:]: nav += text(' | ')+part nav += em(0) else: nav = strong(1)+text(stack_name)+strong(0) # - links troubleshooting = Page(macro.request, '%s/Troubleshooting'%stack_name).link_to(macro.request, text='Troubleshooting') tutorials = Page(macro.request, '%s/Tutorials'%stack_name).link_to(macro.request, text='Tutorials') review_link = Page(macro.request, '%s/Reviews'%stack_name).link_to(macro.request, text='Reviews') changelist = Page(macro.request, '%s/ChangeList'%stack_name).link_to(macro.request, text='Change List') roadmap = Page(macro.request, '%s/Roadmap'%stack_name).link_to(macro.request, text='Roadmap') review_str = review_link + text(' ('+review_status+')') try: desc = macro.formatter.heading(1, 2, id="summary")+text('Stack Summary')+macro.formatter.heading(0, 2)+\ 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)+\ ul(0)+p(0) except UnicodeDecodeError: desc = h(1, 2)+text("Stack Summary")+h(0,2)+p(1)+text('Error retrieving stack summary')+p(0) #TODO: Changelist, Roadmap, Releases try: links = div(1, id="package-links")+strong(1)+text('Stack Links')+strong(0)+\ ul(1)+\ li(1)+tutorials+li(0)+\ li(1)+troubleshooting+li(0)+\ li(1)+changelist+li(0)+\ li(1)+roadmap+li(0)+\ li(1)+review_str+li(0)+\ ul(0) #TODO #<li><a href="%(dependency_tree)s">Dependency Tree</a></li> except UnicodeDecodeError: links = div(1, id="package-links")+div(0) if depends: depends.sort() links += strong(1)+text("Dependencies")+strong(0)+ul(1) for d in depends: links += li(1)+wiki_url(macro,d,shorten=20)+li(0) links += ul(0) if depends_on: depends_on.sort() links += strong(1)+text("Used by")+strong(0)+ul(1) for d in depends_on: links += li(1)+wiki_url(macro,d,shorten=20)+li(0) links+=div(0) #html_str = u''.join([s for s in [nav, links, desc ]]) return rawHTML(nav) + rawHTML(links) + desc
def macro_StackNaviPackageNames(macro, arg1): stack_name = get_unicode(macro.request, arg1) stack_url = None try: import yaml except: return 'python-yaml is not installed on the wiki. Please have an admin install on this machine' if not stack_name: return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name)]]" try: data = load_stack_manifest(stack_name) except UtilException as e: return str(e) if not data or type(data) != dict: return "Unable to retrieve stack data. Auto-generated documentation may need to regenerate: "+str(url) # keys # - manifest keys brief = data.get('brief', stack_name) 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 = '' depends = data.get('depends', []) depends_on = data.get('depends_on', []) review_status = data.get('review_status', 'unreviewed') review_notes = data.get('review_notes', '') or '' # set() logic is to get around temporary bug packages = list(set(data.get('packages', []))) # filter out test packages packages = [s for s in packages if not s.startswith('test_')] packages.sort() p = macro.formatter.paragraph url = macro.formatter.url div = macro.formatter.div em = macro.formatter.emphasis br = macro.formatter.linebreak strong = macro.formatter.strong li = macro.formatter.listitem ul = macro.formatter.bullet_list h = macro.formatter.heading text = macro.formatter.text rawHTML = macro.formatter.rawHTML top = strong(1)+wiki_url(macro,stack_name)+strong(0) parts = [] for pkg in packages: parts.append(wiki_url(macro, pkg)) if stack_name.lower() != 'sandbox': nav ='' if parts: nav += parts[0] for part in parts[1:]: nav += text(', ')+part else: nav = strong(1)+text(stack_name)+strong(0) try: desc = macro.formatter.heading(1, 3, id="summary")+wiki_url(macro,stack_name)+macro.formatter.heading(0, 3)+\ p(1,id="stack-info")+rawHTML(description)+p(0) #+ macro.formatter.div(0) except UnicodeDecodeError: desc = h(1, 2)+text("Stack Summary")+h(0,2)+p(1)+text('Error retrieving stack summary')+p(0) #TODO: Changelist, Roadmap, Releases return (stack_name, packages, desc) #html_str = u''.join([s for s in [nav, links, desc ]]) return desc #+ rawHTML(nav)
def macro_StackHeader(macro, arg1): stack_name = get_unicode(macro.request, arg1) stack_url = None try: import yaml except: return 'python-yaml is not installed on the wiki. Please have an admin install on this machine' if not stack_name: return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name)]]" stack_url = stack_html_link(stack_name) url = stack_link(stack_name) + "/stack.yaml" try: usock = urllib2.urlopen(url) ydata = usock.read() usock.close() except: return 'Newly proposed, mistyped, or obsolete stack. Could not find "' + stack_name + '" in rosdoc: ' + url data = yaml.load(ydata) if not data or type(data) != dict: return "Unable to retrieve stack data. Auto-generated documentation may need to regenerate: " + str( url) # keys # - manifest keys brief = data.get('brief', stack_name) 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 = '' depends = data.get('depends', []) depends_on = data.get('depends_on', []) review_status = data.get('review_status', 'unreviewed') review_notes = data.get('review_notes', '') or '' # set() logic is to get around temporary bug packages = list(set(data.get('packages', []))) # filter out test packages packages = [s for s in packages if not s.startswith('test_')] packages.sort() p = macro.formatter.paragraph url = macro.formatter.url div = macro.formatter.div em = macro.formatter.emphasis br = macro.formatter.linebreak strong = macro.formatter.strong li = macro.formatter.listitem ul = macro.formatter.bullet_list h = macro.formatter.heading text = macro.formatter.text rawHTML = macro.formatter.rawHTML top = strong(1) + text(stack_name) + strong(0) parts = [] for pkg in packages: parts.append(wiki_url(macro, pkg)) if stack_name.lower() != 'sandbox': nav = em(1) + top if parts: nav += text(': ') + parts[0] for part in parts[1:]: nav += text(' | ') + part nav += em(0) else: nav = strong(1) + text(stack_name) + strong(0) # - links troubleshooting = Page(macro.request, '%s/Troubleshooting' % stack_name).link_to(macro.request, text='Troubleshooting') tutorials = Page(macro.request, '%s/Tutorials' % stack_name).link_to(macro.request, text='Tutorials') review_link = Page(macro.request, '%s/Reviews' % stack_name).link_to(macro.request, text='Reviews') changelist = Page(macro.request, '%s/ChangeList' % stack_name).link_to(macro.request, text='Change List') roadmap = Page(macro.request, '%s/Roadmap' % stack_name).link_to(macro.request, text='Roadmap') review_str = review_link + text(' (' + review_status + ')') try: desc = macro.formatter.heading(1, 2, id="summary")+text('Stack Summary')+macro.formatter.heading(0, 2)+\ 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)+\ ul(0)+p(0) except UnicodeDecodeError: desc = h(1, 2) + text("Stack Summary") + h( 0, 2) + p(1) + text('Error retrieving stack summary') + p(0) #TODO: Changelist, Roadmap, Releases try: links = div(1, id="package-links")+strong(1)+text('Stack Links')+strong(0)+\ ul(1)+\ li(1)+tutorials+li(0)+\ li(1)+troubleshooting+li(0)+\ li(1)+changelist+li(0)+\ li(1)+roadmap+li(0)+\ li(1)+review_str+li(0)+\ ul(0) #TODO #<li><a href="%(dependency_tree)s">Dependency Tree</a></li> except UnicodeDecodeError: links = div(1, id="package-links") + div(0) if depends: depends.sort() links += strong(1) + text("Dependencies") + strong(0) + ul(1) for d in depends: links += li(1) + wiki_url(macro, d, shorten=20) + li(0) links += ul(0) if depends_on: depends_on.sort() links += strong(1) + text("Used by") + strong(0) + ul(1) for d in depends_on: links += li(1) + wiki_url(macro, d, shorten=20) + li(0) links += div(0) #html_str = u''.join([s for s in [nav, links, desc ]]) return rawHTML(nav) + rawHTML(links) + desc
def macro_StackNaviPackageNames(macro, arg1): stack_name = get_unicode(macro.request, arg1) stack_url = None try: import yaml except: return 'python-yaml is not installed on the wiki. Please have an admin install on this machine' if not stack_name: return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name)]]" try: data = load_stack_manifest(stack_name) except UtilException as e: return str(e) if not data or type(data) != dict: return "Unable to retrieve stack data. Auto-generated documentation may need to regenerate: " + str( url) # keys # - manifest keys brief = data.get('brief', stack_name) 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 = '' depends = data.get('depends', []) depends_on = data.get('depends_on', []) review_status = data.get('review_status', 'unreviewed') review_notes = data.get('review_notes', '') or '' # set() logic is to get around temporary bug packages = list(set(data.get('packages', []))) # filter out test packages packages = [s for s in packages if not s.startswith('test_')] packages.sort() p = macro.formatter.paragraph url = macro.formatter.url div = macro.formatter.div em = macro.formatter.emphasis br = macro.formatter.linebreak strong = macro.formatter.strong li = macro.formatter.listitem ul = macro.formatter.bullet_list h = macro.formatter.heading text = macro.formatter.text rawHTML = macro.formatter.rawHTML top = strong(1) + wiki_url(macro, stack_name) + strong(0) parts = [] for pkg in packages: parts.append(wiki_url(macro, pkg)) if stack_name.lower() != 'sandbox': nav = '' if parts: nav += parts[0] for part in parts[1:]: nav += text(', ') + part else: nav = strong(1) + text(stack_name) + strong(0) try: desc = macro.formatter.heading(1, 3, id="summary")+wiki_url(macro,stack_name)+macro.formatter.heading(0, 3)+\ p(1,id="stack-info")+rawHTML(description)+p(0) #+ macro.formatter.div(0) except UnicodeDecodeError: desc = h(1, 2) + text("Stack Summary") + h( 0, 2) + p(1) + text('Error retrieving stack summary') + p(0) #TODO: Changelist, Roadmap, Releases return (stack_name, packages, desc) #html_str = u''.join([s for s in [nav, links, desc ]]) return desc #+ rawHTML(nav)
def macro_MsgSrvDoc(macro, arg1, arg2='true'): package_name = get_unicode(macro.request, arg1) print_title=(get_unicode(macro.request, arg2) or 'true') == 'true' if ' ' in package_name: #something changed in the API such that the above arg1, arg2 parsing no longer works splits = package_name.split(' ') if len(splits) > 2: return "ERROR in MsgSrvDoc. Usage: [[MsgSrvDoc(pkg_name print_title)]]" package_name, print_title = splits print_title = print_title.lower() == 'true' package_url = None try: import yaml except: return 'python-yaml is not installed on the wiki. Please have an admin install on this machine' if not package_name: return "ERROR in MsgSrvDoc. Usage: [[MsgSrvDoc(pkg_name)]]" package_url = package_html_link(package_name) manifest_file = package_manifest_file(package_name) try: with open(manifest_file) as f: ydata = f.read() except: return 'Newly proposed, mistyped, or obsolete package. Could not find package "' + package_name + '" in rosdoc: ' + manifest_file m = yaml.safe_load(unicode(ydata, 'utf-8')) if not m or type(m) != dict: return "Unable to retrieve package data from '%s'. Auto-generated documentation may need to regenerate" % manifest_file # - package data keys msgs = m.get('msgs', []) srvs = m.get('srvs', []) actions = m.get('actions', []) msgs.sort() srvs.sort() actions.sort() p = macro.formatter.paragraph url = macro.formatter.url div = macro.formatter.div em = macro.formatter.emphasis br = macro.formatter.linebreak strong = macro.formatter.strong li = macro.formatter.listitem ul = macro.formatter.bullet_list h = macro.formatter.heading text = macro.formatter.text table = macro.formatter.table tr = macro.formatter.table_row td = macro.formatter.table_cell rawHTML = macro.formatter.rawHTML # table of msgs/srvs msg_str = text('') if msgs or srvs or actions: if print_title: types = [] if msgs: types.append('Message') if srvs: types.append('Service') if actions: types.append('Action') msg_str += h(1, 2, id="msg-types")+text('ROS %s Types' % ' / '.join(types))+h(0,2) msg_str += table(1) msg_str += tr(1) if msgs: msg_str += td(1)+strong(1)+text('ROS Message Types')+strong(0)+td(0) if srvs: msg_str += td(1)+strong(1)+text('ROS Service Types')+strong(0)+td(0) if actions: msg_str += td(1)+strong(1)+text('ROS Action Types')+strong(0)+td(0) msg_str += tr(0) msg_str += tr(1) if msgs: msg_str += rawHTML('<td valign="top">') for m in msgs: msg_str += msg_link(package_url, m)+rawHTML('<br />') msg_str += td(0) if srvs: msg_str += rawHTML('<td valign="top">') for s in srvs: msg_str += srv_link(package_url, s)+rawHTML('<br />') msg_str += td(0) if actions: msg_str += rawHTML('<td valign="top">') for a in actions: msg_str += action_link(package_url, a)+rawHTML('<br />') msg_str += td(0) msg_str += tr(0)+table(0) return msg_str
def macro_Anchor(self, anchor=None): anchor = wikiutil.get_unicode(self.request, anchor, "anchor", u"anchor") return self.formatter.anchordef(anchor)
def macro_Anchor(self, anchor=None): anchor = wikiutil.get_unicode(self.request, anchor, 'anchor', u'anchor') return self.formatter.anchordef(anchor)