cmd/nosmartquotes.py

61 lines
1.4 KiB
Python
Raw Normal View History

2021-08-17 07:42:00 +00:00
'''
no smart quotes
===============
Replace smart quotes and smart apostrophes with regular ASCII values.
Just say no to smart quotes!
'''
import argparse
import sys
from voussoirkit import betterhelp
from voussoirkit import spinal
from voussoirkit import vlogging
log = vlogging.getLogger(__name__, 'nosmartquotes')
def replace_smartquotes(text):
text = text.replace('', '"')
text = text.replace('', '"')
text = text.replace('', "'")
text = text.replace('', "'")
return text
def nosmartquotes_argparse(args):
files = spinal.walk(
glob_filenames=args.filename_glob,
recurse=args.recurse,
)
for file in files:
handle = file.open('r', encoding='utf-8')
text = handle.read()
handle.close()
original_text = text
text = replace_smartquotes(text)
if text == original_text:
continue
handle = file.open('w', encoding='utf-8')
handle.write(text)
handle.close()
print(file.absolute_path)
return 0
@vlogging.main_decorator
def main(argv):
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('filename_glob')
parser.add_argument('--recurse', action='store_true')
parser.set_defaults(func=nosmartquotes_argparse)
return betterhelp.single_main(argv, parser, __doc__)
if __name__ == '__main__':
raise SystemExit(main(sys.argv[1:]))