Tapping
This commit is contained in:
parent
68313e8db9
commit
13355aeef4
2 changed files with 82 additions and 6 deletions
|
@ -3,11 +3,46 @@
|
||||||
|
|
||||||
from shogoth.reader import Reader
|
from shogoth.reader import Reader
|
||||||
|
|
||||||
import prompt_toolkit
|
from prompt_toolkit import (
|
||||||
import yaspin
|
print_formatted_text,
|
||||||
|
PromptSession,
|
||||||
|
)
|
||||||
|
from prompt_toolkit.formatted_text import (
|
||||||
|
FormattedText,
|
||||||
|
)
|
||||||
|
from prompt_toolkit.history import FileHistory
|
||||||
|
from prompt_toolkit.styles import Style
|
||||||
|
from yaspin import Spinner, yaspin
|
||||||
|
|
||||||
|
|
||||||
|
STYLE = Style.from_dict(
|
||||||
|
{
|
||||||
|
# User input (default text).
|
||||||
|
"": "",
|
||||||
|
"prompt": "ansigreen",
|
||||||
|
"time": "ansiyellow",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
SPINNER = Spinner(["|", "/", "-", "\\"], 200)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
reader = Reader()
|
||||||
|
session = PromptSession(history=FileHistory(".shogoth.history"))
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
line = session.prompt([("class:prompt", ">>> ")], style=STYLE)
|
||||||
|
except (KeyboardInterrupt):
|
||||||
|
continue
|
||||||
|
except EOFError:
|
||||||
|
break
|
||||||
|
|
||||||
|
with yaspin(SPINNER):
|
||||||
|
read = reader.read(line)
|
||||||
|
|
||||||
|
print(read, type(read))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
reader = Reader()
|
main()
|
||||||
while (line := input(">>> ")):
|
|
||||||
read = reader.read(line)
|
|
||||||
print(read, type(read))
|
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from shogoth.parser import parse
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('example', [
|
||||||
|
"true",
|
||||||
|
"false",
|
||||||
|
"nil",
|
||||||
|
"foo",
|
||||||
|
'"this is a trivial string"',
|
||||||
|
r'/this is a trivial pattern/',
|
||||||
|
"[]",
|
||||||
|
"[[]]",
|
||||||
|
"[[[]]]",
|
||||||
|
"()",
|
||||||
|
"(())",
|
||||||
|
"((()))",
|
||||||
|
"{}",
|
||||||
|
|
||||||
|
# Decimals
|
||||||
|
"10",
|
||||||
|
"01", # odd but legal
|
||||||
|
|
||||||
|
# Octal
|
||||||
|
"0o7",
|
||||||
|
|
||||||
|
# Binary
|
||||||
|
"0b1",
|
||||||
|
|
||||||
|
# Hex
|
||||||
|
"0x1",
|
||||||
|
"0xF",
|
||||||
|
"0xa",
|
||||||
|
|
||||||
|
# FIXME: Floats (ugh)
|
||||||
|
])
|
||||||
|
def test_parses(example):
|
||||||
|
assert parse(example)
|
Loading…
Reference in a new issue