diff options
author | Brad King <brad.king@kitware.com> | 2013-10-22 23:49:45 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2013-10-23 13:36:00 (GMT) |
commit | 2945814de29923b8f063fa179f282fbbae630a36 (patch) | |
tree | 6affd5691e97ee5171960aee7bb1deacbd6c6985 /Utilities/Sphinx | |
parent | 8bb2ee96cc8ae16d039a648c87004e828e9cba16 (diff) | |
download | CMake-2945814de29923b8f063fa179f282fbbae630a36.zip CMake-2945814de29923b8f063fa179f282fbbae630a36.tar.gz CMake-2945814de29923b8f063fa179f282fbbae630a36.tar.bz2 |
cmRST: Teach cmake-module directive to scan bracket comments
When scanning CMake module files for .rst comments, recognize
bracket comments starting in ".rst:" too. For example:
#[[.rst:
Include the bracket comment content terminated by the closing bracket.
Exclude the line containing the bracket if it starts in "#".
Teach the CMakeLib.testRST test to cover multiple bracket lengths
and ending brackets on lines with and without "#".
Update the cmake-developer.7 manual to document the bracket-comment
syntax for .rst documentation.
Diffstat (limited to 'Utilities/Sphinx')
-rw-r--r-- | Utilities/Sphinx/cmake.py | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/Utilities/Sphinx/cmake.py b/Utilities/Sphinx/cmake.py index 75f62df..146e1f6 100644 --- a/Utilities/Sphinx/cmake.py +++ b/Utilities/Sphinx/cmake.py @@ -31,7 +31,6 @@ class CMakeModule(Directive): def __init__(self, *args, **keys): self.re_start = re.compile(r'^#\[(?P<eq>=*)\[\.rst:$') - self.re_end = re.compile(r'^#?\](?P<eq>=*)\]$') Directive.__init__(self, *args, **keys) def run(self): @@ -61,18 +60,36 @@ class CMakeModule(Directive): rst = None lines = [] for line in raw_lines: - if line == '#.rst:': - rst = '#' - line = '' - elif rst == '#': - if line == '#' or line[:2] == '# ': - line = line[2:] - else: + if rst is not None and rst != '#': + # Bracket mode: check for end bracket + pos = line.find(rst) + if pos >= 0: + if line[0] == '#': + line = '' + else: + line = line[0:pos] rst = None - line = '' else: - line = '' + # Line mode: check for .rst start (bracket or line) + m = self.re_start.match(line) + if m: + rst = ']%s]' % m.group('eq') + line = '' + elif line == '#.rst:': + rst = '#' + line = '' + elif rst == '#': + if line == '#' or line[:2] == '# ': + line = line[2:] + else: + rst = None + line = '' + elif rst is None: + line = '' lines.append(line) + if rst is not None and rst != '#': + raise self.warning('"%s" found unclosed bracket "#[%s[.rst:" in %s' % + (self.name, rst[1:-1], path)) self.state_machine.insert_input(lines, path) return [] |