def _install_customer_representers():
""" Installs custom yaml representers so that yaml.dump() can use print out our custom classes like
LineStr, LineDict, LineList """
# TODO(jroovers): we need to support different yaml types like Float, Int, etc so that we don't print
# everything like a string (i.e. wrap atomic type in quotes)
def linestr_representer(dumper, data):
node = dumper.represent_str(str(data))
# If the linestring was entered as a string starting with |, we want to print it in the | again, because
# otherwise pyyaml will insert too many newlines
if hasattr(data, 'style') and '|' == data.style:
node.style = data.style
return node
def lineint_representer(dumper, data):
return dumper.represent_int(data)
def linefloat_representer(dumper, data):
return dumper.represent_float(data)
def linedict_representer(dumper, data):
return dumper.represent_dict(data)
def linelist_representer(dumper, data):
return dumper.represent_list(data)
yaml.add_representer(LineInt, lineint_representer)
yaml.add_representer(LineFloat, linefloat_representer)
yaml.add_representer(LineStr, linestr_representer)
yaml.add_representer(LineDict, linedict_representer)
yaml.add_representer(LineList, linelist_representer)
评论列表
文章目录