mirror of
https://github.com/BurntSushi/ripgrep.git
synced 2024-12-12 19:18:24 +02:00
eeaa42ecaf
This is a preliminary script to copy example code from a Markdown file into a crate's example directory. This is intended to be used for the upcoming libripgrep guide, but we don't commit any examples yet.
34 lines
1.1 KiB
Python
Executable File
34 lines
1.1 KiB
Python
Executable File
#!/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)
|