[mlpack-git] master: Better labeling of doxygen template output. (75c8b77)
gitdub at big.cc.gt.atl.ga.us
gitdub at big.cc.gt.atl.ga.us
Thu Aug 27 19:40:54 EDT 2015
Repository : https://github.com/mlpack/mlpack.org
On branch : master
Link : https://github.com/mlpack/mlpack.org/compare/5278e8fd3c5436ace56cd787823ddab483d0bfb3...75c8b77a6b071b5f071810492ddc919172e55047
>---------------------------------------------------------------
commit 75c8b77a6b071b5f071810492ddc919172e55047
Author: Ryan Curtin <ryan at ratml.org>
Date: Thu Aug 27 19:40:30 2015 -0400
Better labeling of doxygen template output.
>---------------------------------------------------------------
75c8b77a6b071b5f071810492ddc919172e55047
docs/doxygen-post/template_annotator.py | 48 ++++++++++++++++++++++++----
docs/doxygen-post/test_template_annotator.py | 12 +++++--
2 files changed, 50 insertions(+), 10 deletions(-)
diff --git a/docs/doxygen-post/template_annotator.py b/docs/doxygen-post/template_annotator.py
index e73d692..3410b9f 100644
--- a/docs/doxygen-post/template_annotator.py
+++ b/docs/doxygen-post/template_annotator.py
@@ -1,6 +1,8 @@
from pyparsing import Literal, Word, Combine, Group, Optional, ZeroOrMore, \
Forward, nums, alphas, alphanums, LineEnd, ParseException, Suppress, \
OneOrMore, delimitedList
+import re
+import sys
class TemplateAnnotator:
@@ -13,7 +15,7 @@ class TemplateAnnotator:
typenameLiteral = Literal("typename")("type_decl")
classLiteral = Literal("class")("type_decl")
equalLiteral = Literal("=")
- comma = Literal(",")
+ comma = Literal(",")("comma")
ellipses = Literal("...")
operatorLiteral = Literal("operator")
tildeLiteral = Literal("~")
@@ -29,13 +31,25 @@ class TemplateAnnotator:
template_param_list = Forward()
- template_param = Group((classLiteral + Optional(identifier) + Optional(default_argument)) |\
- (typenameLiteral + Optional(identifier) + Optional(default_argument)) |\
- (templateLiteral + openBracket + template_param_list + closeBracket + classLiteral + Optional(identifier) + Optional(default_argument)))("template_param*")
+ template_param = Group(classLiteral + Optional(identifier) + Optional(default_argument))("template_param*") |\
+ Group(typenameLiteral + Optional(identifier) + Optional(default_argument))("template_param*") |\
+ Group(templateLiteral + openBracket + template_param_list + closeBracket + classLiteral + Optional(identifier) + Optional(default_argument))("template_template_param*")
- template_param_list << Group(delimitedList(template_param))("template_param_list")
+ # This needs to be its own separate thing so that the comma gets grouped in
+ # the template_param div.
+ template_param_with_comma = Group(classLiteral + Optional(identifier) + Optional(default_argument) + comma)("template_param*") |\
+ Group(typenameLiteral + Optional(identifier) + Optional(default_argument) + comma)("template_param*") |\
+ Group(templateLiteral + openBracket + template_param_list + Group(classLiteral + Optional(identifier) + Optional(default_argument) + comma)("template_template_param_name"))("template_template_param*")
- self.grammar = (Literal("template")("template_decl") + openBracket + template_param_list + closeBracket) |\
+ # This also needs to be its own separate thing so that the closing bracket
+ # gets grouped in the template_param div.
+ template_param_with_close = Group(classLiteral + Optional(identifier) + Optional(default_argument) + closeBracket)("template_param*") |\
+ Group(typenameLiteral + Optional(identifier) + Optional(default_argument) + closeBracket)("template_param*") |\
+ Group(templateLiteral + openBracket + template_param_list + Group(classLiteral + Optional(identifier) + Optional(default_argument) + closeBracket)("template_template_param_name"))("template_template_param")
+
+ template_param_list << Group(ZeroOrMore(template_param_with_comma) + template_param_with_close)("template_param_list")
+
+ self.grammar = (Literal("template")("template_decl") + openBracket + template_param_list) |\
(Literal("template")("template_decl") + openBracket + closeBracket)
def process(self, string):
@@ -43,7 +57,7 @@ class TemplateAnnotator:
a = self.grammar.parseString(string)
# Now process the string. We get XML back, but we really need named divs.
- return a.asXML('template_expr')\
+ retstr = a.asXML('template_expr')\
.replace('<template_expr', '<div class="template_expr"')\
.replace('</template_expr', '</div')\
.replace('<template_decl', '<div class="template_decl"')\
@@ -58,10 +72,30 @@ class TemplateAnnotator:
.replace('</template_param_list', '</div')\
.replace('<template_param', '<div class="template_param"')\
.replace('</template_param', '</div')\
+ .replace('<template_template_param_name', '<div class="template_template_param_name"')\
+ .replace('</template_template_param_name', '</div')\
+ .replace('<template_template_param', '<div class="template_template_param"')\
+ .replace('</template_template_param', '</div')\
.replace('<type_decl', '<div class="type_decl"')\
.replace('</type_decl', '</div')\
.replace('<identifier', '<div class="identifier"')\
.replace('</identifier', '</div')\
+ .replace('<default_argument', '<div class="default_argument"')\
+ .replace('</default_argument', '</div')\
+ .replace('<equals', '<div class="equals"')\
+ .replace('</equals', '</div')\
+ .replace('<comma', '<div class="comma"')\
+ .replace('</comma', '</div')\
+ .replace('<template', '<div class="template"')\
+ .replace('</template', '</div')
+
+ # Strip away extra spaces.
+ retstr = re.sub(r"^[ ]*", "", retstr)
+ retstr = re.sub(r"[ ]*$", "", retstr)
+ retstr = re.sub(r"\n[ ]*", "\n", retstr)
+ retstr = re.sub(r"[ ]*\n", "\n", retstr)
+
+ return retstr.replace('\n', '')
except ParseException, err:
# print err.line
diff --git a/docs/doxygen-post/test_template_annotator.py b/docs/doxygen-post/test_template_annotator.py
index 5953448..9bf698b 100755
--- a/docs/doxygen-post/test_template_annotator.py
+++ b/docs/doxygen-post/test_template_annotator.py
@@ -6,10 +6,10 @@ a = t.grammar.parseString('template < typename A >')
print a.asXML('div')
print ''
-a = t.grammar.parseString('template < >')
+#a = t.grammar.parseString('template < >')
-print a.asXML('div')
-print ''
+#print a.asXML('div')
+#print ''
a = t.grammar.parseString('template < typename A, typename B >')
@@ -35,3 +35,9 @@ a = t.grammar.parseString('template < template < typename A > class B &
print a.asXML('div')
print ''
+
+a = t.grammar.parseString('template<typename MetricType, typename StatisticType = EmptyStatistic, typename MatType = arma::mat, template< typename BoundMetricType > class BoundType = bound::HRectBound, template< typename SplitBoundType, typename SplitMatType > class SplitType = MidpointSplit >')
+#a = t.grammar.parseString('template<template< typename BoundMetricType > class BoundType = bound::HRectBound, template< typename SplitBoundType, typename SplitMatType > class SplitType = MidpointSplit >')
+
+print a.asXML('div')
+print ''
More information about the mlpack-git
mailing list