add ymmw, toggle_displays.clj

This commit is contained in:
Rune Juhl Jacobsen 2025-04-28 10:15:15 +02:00
parent e6af9de435
commit 18ff2a0636
2 changed files with 88 additions and 0 deletions

34
ymmw Normal file
View file

@ -0,0 +1,34 @@
#!/usr/bin/env python3
"""Re-format YAML passed on stdin or read from any arguments."""
import yaml
import sys
# https://stackoverflow.com/a/72265455
def str_presenter(dumper, data):
if len(data.splitlines()) > 1 or "\n" in data:
text_list = [line.rstrip() for line in data.splitlines()]
fixed_data = "\n".join(text_list)
return dumper.represent_scalar("tag:yaml.org,2002:str", fixed_data, style="|")
return dumper.represent_scalar("tag:yaml.org,2002:str", data)
yaml.add_representer(str, str_presenter)
def ymmw(files):
if not files:
files=[sys.stdin]
for f in files:
try:
print(f)
print(yaml.dump(yaml.load(open(f) if not f == sys.stdin else f, Loader=yaml.FullLoader)), end='')
except OSError as ex:
sys.exit(f"""ERROR: Couldn't read input from stdin, or couldn't write output to stdout. Exiting.
{ex}""")
if __name__ == '__main__':
ymmw(sys.argv[1:])