helm/bin/htmlent
2017-12-18 01:12:13 -05:00

37 lines
924 B
Python
Executable file

#!/usr/bin/env python3
"""
Encode/decode HTML entities in stdin or given file(s).
"""
import argparse
import fileinput
import html
from html.entities import entitydefs
ENTITIES = {value: key for key, value in entitydefs.items()}
def encode(text):
t = ""
for c in text:
if c in ENTITIES:
t += "&" + ENTITIES[c] + ";"
else:
t += c
return t
def decode(text):
return html.unescape(text)
if __name__ == '__main__':
opts = argparse.ArgumentParser(description="Encodes (or decodes) HTML entities in text.")
opts.add_argument('file', type=str, nargs="*", help="File to encode/decode")
opts.add_argument('-d', '--decode', action='store_true', help="Decode the given files/input")
args = opts.parse_args()
text = [line for line in fileinput.input(args.file)]
action = decode if args.decode else encode
print(action("\n".join(text).strip()))