mirror of
https://github.com/BurntSushi/ripgrep.git
synced 2025-05-18 17:20:21 -07:00
scripts: add copy-examples
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.
This commit is contained in:
parent
3797a2a5cb
commit
eeaa42ecaf
33
scripts/copy-examples
Executable file
33
scripts/copy-examples
Executable file
@ -0,0 +1,33 @@
|
|||||||
|
#!/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)
|
Loading…
x
Reference in New Issue
Block a user