/
githubmirror
/
ripgrep
Обзор
Документация
Войти
/
githubmirror
/
ripgrep
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
15.1.0
scripts/copy-examples
33 строки
1 KB
Andrew Gallant
scripts: add copy-examples
07 сен 2018, 19:27
Не верифицирован
07 сен 2018, 19:27
eeaa42e
Код
Авторство
О чём код?
#!/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)