mirror of
				https://github.com/pocketpy/pocketpy
				synced 2025-10-26 14:30:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import re
 | |
| 
 | |
| filepath = 'include/pocketpy/vm.h'
 | |
| 
 | |
| with open(filepath, 'r', encoding='utf-8') as f:
 | |
|     lines = f.readlines()
 | |
| 
 | |
| REGION_PATTERN = re.compile(r'#if PK_REGION\("(.+)"\)')
 | |
| 
 | |
| current_region = None
 | |
| output = []
 | |
| 
 | |
| def parse_line(line: str):
 | |
|     output.append(line)
 | |
| 
 | |
| for line in lines:
 | |
|     if current_region:
 | |
|         if line.startswith('#endif'):
 | |
|             current_region = None
 | |
|             output.append('```\n\n')
 | |
|         else:
 | |
|             parse_line(line.strip(' '))
 | |
|     else:
 | |
|         m = REGION_PATTERN.match(line)
 | |
|         if m:
 | |
|             current_region = m.group(1)
 | |
|             output.append(f'### {current_region}\n')
 | |
|             output.append('```cpp\n')
 | |
| 
 | |
| with open('docs/references.md', 'w', encoding='utf-8') as f:
 | |
|     f.write('''---
 | |
| label: References
 | |
| icon: code
 | |
| order: 2
 | |
| ---
 | |
|             
 | |
| This page contains all useful methods of `VM` class.
 | |
| 
 | |
| ''')
 | |
|     content = ''.join(output)
 | |
|     # replace {...} to  ; (multi-line match)
 | |
|     content = re.sub(r'\{[^}]+?\}', r';', content, flags=re.DOTALL)
 | |
|     f.write(content)
 |