summaryrefslogtreecommitdiffstats
path: root/examples/python-embed-with-custom-prompt.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/python-embed-with-custom-prompt.py')
-rwxr-xr-xexamples/python-embed-with-custom-prompt.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/examples/python-embed-with-custom-prompt.py b/examples/python-embed-with-custom-prompt.py
new file mode 100755
index 0000000..d54da1d
--- /dev/null
+++ b/examples/python-embed-with-custom-prompt.py
@@ -0,0 +1,38 @@
+#!/usr/bin/env python
+"""
+Example of embedding a Python REPL, and setting a custom prompt.
+"""
+from prompt_toolkit.formatted_text import HTML, AnyFormattedText
+
+from ptpython.prompt_style import PromptStyle
+from ptpython.repl import embed
+
+
+def configure(repl) -> None:
+ # Probably, the best is to add a new PromptStyle to `all_prompt_styles` and
+ # activate it. This way, the other styles are still selectable from the
+ # menu.
+ class CustomPrompt(PromptStyle):
+ def in_prompt(self) -> AnyFormattedText:
+ return HTML("<ansigreen>Input[%s]</ansigreen>: ") % (
+ repl.current_statement_index,
+ )
+
+ def in2_prompt(self, width: int) -> AnyFormattedText:
+ return "...: ".rjust(width)
+
+ def out_prompt(self) -> AnyFormattedText:
+ return HTML("<ansired>Result[%s]</ansired>: ") % (
+ repl.current_statement_index,
+ )
+
+ repl.all_prompt_styles["custom"] = CustomPrompt()
+ repl.prompt_style = "custom"
+
+
+def main() -> None:
+ embed(globals(), locals(), configure=configure)
+
+
+if __name__ == "__main__":
+ main()