43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #  Copyright (c) PARRRATE T&V 2021. All rights reserved.
 | ||
| 
 | ||
| from io import BytesIO
 | ||
| 
 | ||
| from bu4.parsing.codes import *
 | ||
| 
 | ||
| __all__ = ('transply',)
 | ||
| 
 | ||
| 
 | ||
| def transply(source: str) -> bytes:
 | ||
|     b = BytesIO()
 | ||
|     for c in source:
 | ||
|         if c.isspace():
 | ||
|             pass
 | ||
|         elif c in '/':
 | ||
|             b.write(bytes([CODE_CALL]))
 | ||
|         elif c in '{‹':
 | ||
|             b.write(bytes([CODE_CALL, CODE_QOPN]))
 | ||
|         elif c in '(':
 | ||
|             b.write(bytes([CODE_MAKE]))
 | ||
|         elif c in '|':
 | ||
|             b.write(bytes([CODE_QCLS, CODE_MAKE]))
 | ||
|         elif c in '})':
 | ||
|             b.write(bytes([CODE_NULL]))
 | ||
|         elif c in '#':
 | ||
|             b.write(bytes([CODE_SKIP]))
 | ||
|         elif c in '?':
 | ||
|             b.write(bytes([CODE_QOPN, CODE_NULL, CODE_QCLS]))
 | ||
|         elif c in ']':
 | ||
|             b.write(bytes([CODE_NULL, CODE_QCLS]))
 | ||
|         elif c in '[':
 | ||
|             b.write(bytes([CODE_QOPN, CODE_NAME]))
 | ||
|         elif c in '"':
 | ||
|             b.write(bytes([CODE_QUOT]))
 | ||
|         elif c in '<':
 | ||
|             b.write(bytes([CODE_QOPN]))
 | ||
|         elif c in '>›':
 | ||
|             b.write(bytes([CODE_QCLS]))
 | ||
|         else:
 | ||
|             value = c.encode()
 | ||
|             b.write(value if len(value) == 1 else f'[{value.hex()}]'.encode())
 | ||
|     return b.getvalue()
 |