def escape(s):
"""Return a string with Texinfo command characters escaped."""
s = s.replace('@', '@@')
s = s.replace('{', '@{')
s = s.replace('}', '@}')
return s
def escape_arg(s):
"""Return an escaped string suitable for use as an argument
to a Texinfo command."""
s = escape(s)
s = s.replace(',', '@comma{}')
s = ' '.join(s.split()).strip()
return s
def escape_id(s):
"""Return an escaped string suitable for node names, menu entries,
and xrefs anchors."""
bad_chars = ',:.()@{}'
for bc in bad_chars:
s = s.replace(bc, ' ')
s = ' '.join(s.split()).strip()
return s