forked from vain/pdfPres
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathlegacy-notes-converter.py
executable file
·64 lines (48 loc) · 1.64 KB
/
legacy-notes-converter.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env python
# -*- coding: utf8 -*-
"""
Copyright 2010 Peter Hofmann
This file is part of pdfPres.
pdfPres is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your
option) any later version.
pdfPres is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along
with pdfPres. If not, see <http://www.gnu.org/licenses/>.
"""
import sys
from xml.dom import minidom
if len(sys.argv) < 2:
print >> sys.stderr, "Please provide the path to your notes."
sys.exit(1)
# Read the file.
fp = open(sys.argv[1], "r")
content = fp.read()
fp.close()
# Extract notes.
slides = {}
rawtokens = content.split("-- ")[1:]
for i in rawtokens:
lines = i.split("\n")
number = lines[0]
# Filter out commented lines.
lines = [e for e in lines if (e != "" and e[0] != "#") or e == ""]
# Set notes for this slide.
slides[number] = "\n".join(lines[1:]).strip()
# Create and print XML document.
xml = minidom.Document()
rootElem = xml.createElement("notes")
xml.appendChild(rootElem)
for (slideNum, note) in slides.items():
# We expect the file to be UTF-8-encoded.
note = note.decode("UTF-8")
slideElem = xml.createElement("slide")
slideElem.setAttribute("number", slideNum)
textData = xml.createTextNode(note)
slideElem.appendChild(textData)
rootElem.appendChild(slideElem)
print xml.toxml("UTF-8")