Files
unison/doc/contributing/pickle-to-xml.py

48 lines
1.5 KiB
Python
Raw Normal View History

2019-05-14 09:28:45 -07:00
#!/usr/bin/python
# output xml format:
# <pages>
# <page url="xx"><prev url="yyy">zzz</prev><next url="hhh">lll</next><fragment>file.frag</fragment></page>
# ...
# </pages>
import codecs
2023-11-19 20:07:19 -03:00
import os
import pickle
2019-05-14 09:28:45 -07:00
def dump_pickles(out, dirname, filename, path):
2023-11-19 20:07:19 -03:00
with open(os.path.join(dirname, filename), "r", encoding="utf-8") as f:
2023-05-21 17:43:48 +01:00
data = pickle.load(f)
2023-11-19 20:07:19 -03:00
with codecs.open(
data["current_page_name"] + ".frag", mode="w", encoding="utf-8"
) as fragment_file:
fragment_file.write(data["body"])
2023-05-21 17:43:48 +01:00
2019-05-14 09:28:45 -07:00
out.write(' <page url="%s">\n' % path)
2023-11-19 20:07:19 -03:00
out.write(" <fragment>%s.frag</fragment>\n" % data["current_page_name"])
if data["prev"] is not None:
out.write(
' <prev url="%s">%s</prev>\n'
% (os.path.normpath(os.path.join(path, data["prev"]["link"])), data["prev"]["title"])
)
if data["next"] is not None:
out.write(
' <next url="%s">%s</next>\n'
% (os.path.normpath(os.path.join(path, data["next"]["link"])), data["next"]["title"])
)
out.write(" </page>\n")
if data["next"] is not None:
next_path = os.path.normpath(os.path.join(path, data["next"]["link"]))
next_filename = os.path.basename(next_path) + ".fpickle"
2019-05-14 09:28:45 -07:00
dump_pickles(out, dirname, next_filename, next_path)
2023-11-19 20:07:19 -03:00
2019-05-14 09:28:45 -07:00
import sys
2023-11-19 20:07:19 -03:00
sys.stdout.write("<pages>\n")
dump_pickles(sys.stdout, os.path.dirname(sys.argv[1]), os.path.basename(sys.argv[1]), "/")
sys.stdout.write("</pages>")