mirror of
https://github.com/BurntSushi/ripgrep.git
synced 2024-12-12 19:18:24 +02:00
34 lines
1.1 KiB
Plaintext
34 lines
1.1 KiB
Plaintext
|
#!/usr/bin/env python
|
||
|
|
||
|
from __future__ import absolute_import, division, print_function
|
||
|
import argparse
|
||
|
import codecs
|
||
|
import os.path
|
||
|
import re
|
||
|
|
||
|
RE_EACH_CODE_BLOCK = re.compile(
|
||
|
r'(?s)(?:```|\{\{< high rust[^>]+>\}\})[^\n]*\n(.*?)(?:```|\{\{< /high >\}\})' # noqa
|
||
|
)
|
||
|
RE_MARKER = re.compile(r'^(?:# )?//([^/].*)$')
|
||
|
RE_STRIP_COMMENT = re.compile(r'^# ?')
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
p = argparse.ArgumentParser()
|
||
|
p.add_argument('--rust-file', default='src/cookbook.rs')
|
||
|
p.add_argument('--example-dir', default='grep/examples')
|
||
|
args = p.parse_args()
|
||
|
|
||
|
with codecs.open(args.rust_file, encoding='utf-8') as f:
|
||
|
rustcode = f.read()
|
||
|
for m in RE_EACH_CODE_BLOCK.finditer(rustcode):
|
||
|
lines = m.group(1).splitlines()
|
||
|
marker, codelines = lines[0], lines[1:]
|
||
|
m = RE_MARKER.search(marker)
|
||
|
if m is None:
|
||
|
continue
|
||
|
|
||
|
code = '\n'.join(RE_STRIP_COMMENT.sub('', line) for line in codelines)
|
||
|
fpath = os.path.join(args.example_dir, m.group(1))
|
||
|
with codecs.open(fpath, mode='w+', encoding='utf-8') as f:
|
||
|
print(code, file=f)
|