workflows/lib/chatmark/iobase.py

44 lines
913 B
Python
Raw Normal View History

2023-12-31 22:36:22 +08:00
import yaml
def _send_message(message):
out_data = f"""\n{message}\n"""
print(out_data, flush=True)
def _parse_chatmark_response(response):
# resonse looks like:
"""
``` some_name
some key name 1: value1
some key name 2: value2
```
"""
# parse key values
lines = response.strip().split("\n")
if len(lines) <= 2:
return {}
data = yaml.safe_load("\n".join(lines[1:-1]))
return data
def pipe_interaction(message: str):
_send_message(message)
lines = []
while True:
try:
line = input()
if line.strip().startswith("```yaml"):
lines = []
elif line.strip() == "```":
lines.append(line)
break
lines.append(line)
except EOFError:
pass
response = "\n".join(lines)
return _parse_chatmark_response(response)