Skip to content

Commit

Permalink
press_any_key_to_continue initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
BrianPugh committed May 25, 2023
1 parent 6cdc221 commit 2ca2847
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 0 deletions.
2 changes: 2 additions & 0 deletions questionary/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
from questionary.prompts.confirm import confirm
from questionary.prompts.password import password
from questionary.prompts.path import path
from questionary.prompts.press_any_key_to_continue import press_any_key_to_continue
from questionary.prompts.rawselect import rawselect
from questionary.prompts.select import select
from questionary.prompts.text import text
Expand All @@ -34,6 +35,7 @@
"confirm",
"password",
"path",
"press_any_key_to_continue",
"rawselect",
"select",
"text",
Expand Down
2 changes: 2 additions & 0 deletions questionary/prompts/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from questionary.prompts import confirm
from questionary.prompts import password
from questionary.prompts import path
from questionary.prompts import press_any_key_to_continue
from questionary.prompts import rawselect
from questionary.prompts import select
from questionary.prompts import text
Expand All @@ -16,6 +17,7 @@
"password": password.password,
"checkbox": checkbox.checkbox,
"path": path.path,
"press_any_key_to_continue": press_any_key_to_continue.press_any_key_to_continue,
# backwards compatible names
"list": select.select,
"rawlist": rawselect.rawselect,
Expand Down
61 changes: 61 additions & 0 deletions questionary/prompts/press_any_key_to_continue.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
from typing import Optional

from prompt_toolkit import PromptSession
from prompt_toolkit.formatted_text import to_formatted_text
from prompt_toolkit.key_binding import KeyBindings
from prompt_toolkit.keys import Keys
from prompt_toolkit.styles import Style
from prompt_toolkit.styles import merge_styles

from questionary.constants import DEFAULT_STYLE
from questionary.question import Question


def press_any_key_to_continue(
message: Optional[str] = None,
style: Optional[Style] = None,
**kwargs,
):
"""Wait until user presses any key to continue.
Example:
>>> import questionary
>>> questionary.press_any_key_to_continue().ask()
Press any key to continue...
None
Args:
message: Question text. Defaults to `"Press any key to continue..."`
style: A custom color and style for the question parts. You can
configure colors as well as font types for different elements.
Returns:
:class:`Question`: Question instance, ready to be prompted (using `.ask()`).
"""
merged_style = merge_styles([DEFAULT_STYLE, style])

if message is None:
message = ("Press any key to continue...",)

def get_prompt_tokens():
tokens = []

tokens.append(("class:question", f" {message} "))

return to_formatted_text(tokens)

def exit_with_result(event):
event.app.exit(result=None)

bindings = KeyBindings()

@bindings.add(Keys.Any)
def any_key(event):
exit_with_result(event)

return Question(
PromptSession(
get_prompt_tokens, key_bindings=bindings, style=merged_style, **kwargs
).app
)
11 changes: 11 additions & 0 deletions tests/prompts/test_press_any_key_to_continue.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# -*- coding: utf-8 -*-

from tests.utils import feed_cli_with_input


def test_press_any_key_to_continue_default_message():
message = None
text = "c"
result, cli = feed_cli_with_input("press_any_key_to_continue", message, text)

assert result is None

0 comments on commit 2ca2847

Please sign in to comment.