mirror of
				https://github.com/BurntSushi/ripgrep.git
				synced 2025-10-30 23:17:47 +02: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:
		
							
								
								
									
										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) | ||||
		Reference in New Issue
	
	Block a user