A simple code generator
Project description
ghost_writer
A simple package that allows you to build a class to parameterize scripts via code generation.
A cmdline utility is add to convert python scripts into generators which can later be modified.
Installation
pip install ghost-writer
Usage
Say you have a simple script that you want to parameterize for code generation.
import os
for i in range(10):
for j in range(20):
pass
In the terminal run the scriptify_py
command on the script
scriptify_py script.py
Now you will have a new file called generated_script.py
which contains a class that can generate that script which can be run:
from ghost_writer import ScriptGenerator
class NewGenerator(ScriptGenerator):
def __init__(self, file_name: str) -> None:
super().__init__(file_name)
def _build_script(self) -> None:
self._add_line('import os')
self._end_line()
self._end_line()
self._add_line('for i in range(10):')
self._add_line('for j in range(20):', indent_level=1)
self._add_line('pass', indent_level=2)
We can now modify the class to be parameterized:
from ghost_writer import ScriptGenerator
class MyGenerator(ScriptGenerator):
def __init__(self, file_name: str, parameter: int) -> None:
self._parameter = parameter
super().__init__(file_name)
def _build_script(self) -> None:
self._add_line('import os')
self._end_line()
self._end_line()
self._add_line('for i in range(10):')
self._add_line('for j in range(20):', indent_level=1)
self._add_line(f'print({parameter})', indent_level=2)
Now in python, we can import our class and run it:
generator = MyGenerator("new_script.py", 4)
generator.write()
And now we have a generated script called new_script.py
import os
for i in range(10):
for j in range(20):
print(4)
- Free software: GNU General Public License v3
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.