summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/src/docs/tools/doxfilter.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/wiredtiger/src/docs/tools/doxfilter.py')
-rwxr-xr-xsrc/third_party/wiredtiger/src/docs/tools/doxfilter.py145
1 files changed, 1 insertions, 144 deletions
diff --git a/src/third_party/wiredtiger/src/docs/tools/doxfilter.py b/src/third_party/wiredtiger/src/docs/tools/doxfilter.py
index 26c8e07c691..efe5c3ca80a 100755
--- a/src/third_party/wiredtiger/src/docs/tools/doxfilter.py
+++ b/src/third_party/wiredtiger/src/docs/tools/doxfilter.py
@@ -31,8 +31,6 @@
# WiredTiger reference manual. It changes comments to Javadoc style
# (i.e., from "/*!" to "/**"), because the latter are configured to not
# search for brief descriptions at the beginning of pages.
-# It also processes any page marked with @m_page specially to create
-# multiple per-language versions of the page.
import re, sys
@@ -44,149 +42,8 @@ def err(arg):
sys.stderr.write(filename + ':' + str(linenum) + ': ERROR: ' + arg + '\n')
sys.exit(1)
-def java_post_substitutions(source):
- result = source
- for datatype in [['WT_CONNECTION', 'Connection'],
- ['WT_CURSOR', 'Cursor'],
- ['WT_SESSION', 'Session']]:
- fromdt = datatype[0]
- todt = datatype[1]
-
- # e.g. replace("WT_CONNECTION::", "Connection.").
- # replace("WT_CONNECTION", "Connection")
- # replace("::WT_CONNECTION", "Connection")
- # etc.
- result = result.replace(fromdt + '::', todt + '.')
- result = re.sub(r':*' + fromdt, todt, result)
-
- # We fix back any 'ref' entries, since we don't have
- # many java versions of these refered-to pages.
- #
- # Ideally, we'd have a way ('@m_ref'?) to indicate which
- # ones could refer to a Java version.
- result = result.replace('ref ' + todt + '.', 'ref ' + fromdt + '::')
- result = result.replace('::wiredtiger_open', '\c wiredtiger.open')
- return result
-
-def process_lang(lang, lines):
- result = ''
- lang_ext = '.' + lang
- class_suffix = None
- if lang == 'c':
- lang_suffix = ""
- lang_desc=""
- elif lang == 'java':
- lang_suffix = "_lang_java"
- lang_desc=" in Java"
- else:
- err('@m_page contains illegal lang: ' + lang)
- condstack = [True]
- linenum = 0
- mif_pat = re.compile(r'^\s*@m_if{([^,}]*)}')
- melse_pat = re.compile(r'^\s*@m_else\s*$')
- mendif_pat = re.compile(r'^\s*@m_endif\s*$')
- mpage_pat = re.compile(r'@m_page{{([^}]*)},([^,}]*),([^}]*)}')
- mpage_rep = r'@page \2' + lang_suffix + r' \3 ' + lang_desc
- ref_pat = re.compile(r'@ref\s+(\w*)')
- ref_rep = r'@ref \1' + lang_suffix
- snip_pat = re.compile(r'@snippet ex_([^.]*)[.]c\s+(.*)')
- snip_rep = r'@snippet ex_\1' + lang_ext + r' \2'
- section_pat = re.compile(r'(^@\w*section)\s+(\w*)')
- section_rep = r'\1 \2' + lang_suffix
- subpage_pat = re.compile(r'@subpage\s+(\w*)')
- subpage_rep = r'@subpage \1' + lang_suffix
- exref_pat = re.compile(r'@ex_ref{ex_([^.]*)[.]c}')
- # Add some ability to have non-language references
- x_ref_pat = re.compile(r'@x_ref\s+(\w*)')
- x_ref_rep = r'@ref \1'
- if lang == 'c':
- exref_rep = r'@ex_ref{ex_\1' + lang_ext + '}'
- else:
- # Though we have java examples, we don't have references
- # to them working yet, so strip the @ex_ref.
- exref_rep = r'ex_\1' + lang_ext
-
- # Any remaining @m_foo{...} aliases are
- # diverted to @c_foo{...} or @java_foo{...}
- mgeneric_pat = re.compile(r'@m_([^ }]*)')
- mgeneric_rep = r'@' + lang + r'_\1'
- for line in lines:
- linenum += 1
- if lang != 'c':
- line = re.sub(exref_pat, exref_rep, line)
- line = re.sub(ref_pat, ref_rep, line)
- line = re.sub(section_pat, section_rep, line)
- line = re.sub(snip_pat, snip_rep, line)
- line = re.sub(mpage_pat, mpage_rep, line)
- line = re.sub(subpage_pat, subpage_rep, line)
- line = re.sub(x_ref_pat, x_ref_rep, line)
- if '@m_if' in line:
- m = re.search(mif_pat, line)
- if not m:
- err('@m_if incorrect syntax')
- iflang = m.groups()[0]
- if iflang != 'java' and iflang != 'c':
- err('@m_if unknown language')
- condstack.append(iflang == lang)
- elif '@m_else' in line:
- if not re.search(melse_pat, line):
- err('@m_else has extraneous stuff')
- if len(condstack) <= 1:
- err('@m_else missing if')
- condstack[-1] = not condstack[-1]
- elif '@m_endif' in line:
- if not re.search(mendif_pat, line):
- err('@m_endif has extraneous stuff')
- if len(condstack) <= 1:
- err('@m_endif missing if')
- condstack.pop()
- else:
- if condstack[-1]:
- # Do generic @m_... macros last
- line = re.sub(mgeneric_pat,
- mgeneric_rep, line)
- result += line + '\n'
- if lang == 'java':
- result = java_post_substitutions(result)
- if len(condstack) != 1:
- err('non matching @m_if/@m_endif')
- return result
-
-# Collect all lines between @m_page and the comment end to
-# be processed multiple times, once for each language.
-def process_multilang(source):
- result = ''
- in_mpage = False
- mpage_content = []
- mpage_pat = re.compile(r'@m_page{{([^}]*)},([^,}]*),([^}]*)}')
- mpage_end_pat = re.compile(r'\*/')
- for line in source.split('\n'):
- m = re.search(mpage_pat, line)
- if line.count('@m_page') > 0 and not m:
- err('@m_page incorrect syntax')
- if m:
- if in_mpage:
- err('multiple @m_page without end of comment')
- else:
- in_mpage = True
- langs = m.groups()[0].split(',')
- if in_mpage:
- mpage_content.append(line)
- else:
- result += line + '\n'
- if re.search(mpage_end_pat, line):
- if in_mpage:
- in_mpage = False
- for lang in langs:
- result += process_lang(lang, mpage_content)
- mpage_content = []
- return result
-
def process(source):
- source = source.replace(r'/*!', r'/**')
- if '@m_' in source:
- source = process_multilang(source)
- return source
+ return source.replace(r'/*!', r'/**')
if __name__ == '__main__':
for f in sys.argv[1:]: