1
2
3 """
4 Read out and write out an Object from/to a yaml-file.
5
6 This is a base class which gets used by other classes.
7
8 Just call it with an ID-dict and a basic template (object or dict) and get the object or dict via Objekt.objekt, or write it via Objekt.write(<dict>).
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 import yaml
36
37
38
39 from ein_und_ausgabe import tag_zu_datei
40
41
42 import sys
43
44
45
46 import os
47
48
49
50
51
53 - def __init__(self, ID=yaml.load("""ID: tag:draketo.de,2007:Sskreszta
54 Version: 0.15
55 Kategorie: Charaktere
56 """), template=yaml.load("""- Name: " "
57 - Grunddaten:
58 Beschreibung: " "
59 Herkunft:
60 Sprache: ' '
61 Region: ' '
62 Stimmung: ' '
63 - Werte:
64 - Eigenschaften: " "
65 - Fertigkeiten:
66 Nahkampf: &id001
67 Zahlenwert: 12
68 - Merkmale: " "
69 - Ausrüstung:
70 Waffen:
71 Waffenlos: &id002
72 Name: Waffenlos
73 Schaden: 1
74 Rüestung:
75 Stoffkleidung: &hauptruestung
76 Name: Stoffkleidung
77 Schutz: 1
78 - Kampfwerte:
79 Hauptwaffe:
80 Kampffertigkeit: *id001
81 Waffe: *id002
82 Trefferpunkte: 24
83 Wundschwelle: 4
84 Hauptrüstung: *hauptruestung""")):
85 self.ID = ID
86 self.template = template
87 self.template_yaml = yaml.dump(self.template, default_flow_style=False, allow_unicode=True)
88 self.objekt = self.laden()
89
91 """Load an object from a yaml-file."""
92
93 if os.path.exists(self.dateiname()):
94 datei = open(self.dateiname(), "r")
95 charakter = yaml.load(datei.read())
96 datei.close()
97 return charakter
98 elif not os.path.isdir("./" + self.kategorie() + "/"):
99 print "Kategorie", self.kategorie(), "existiert nicht. Kategorie und Datei werden erstellt."
100 os.mkdir("./" + self.kategorie() + "/")
101 datei = open(self.dateiname(), "w")
102 datei.write(self.template_yaml)
103 datei.close()
104 return self.laden()
105 else:
106 print "Datei", self.dateiname(), "existiert nicht. Wird erstellt."
107 datei = open(self.dateiname(), "w")
108 datei.write(self.template_yaml)
109 datei.close()
110 return self.laden()
111
113 """Return path and filename based on Cathegory, Version and Tag."""
114 tag_zu_dat = tag_zu_datei.Datei(self.ID)
115 return tag_zu_dat.dateiname_ausgeben()
116
121
123 print u"öffne", self.dateiname()
124 datei = open(self.dateiname(), "w")
125 print u"Schreibe", self.kategorie(), self.objekt_name()
126 datei.write(self.yaml())
127 datei.close()
128
130 print self.objekt
131 print yaml.dump(self.objekt, default_flow_style=False, allow_unicode=True)
132 return yaml.dump(self.objekt, default_flow_style=False, allow_unicode=True)
133
135 tag_zu_dat = tag_zu_datei.Datei(self.ID)
136 return tag_zu_dat.name_ausgeben()
137
138
139
140
141
142 if __name__ == '__main__':
143 objekt = Objekt()
144 print objekt
145 print yaml.dump(objekt.objekt)
146