Trees | Indices | Help |
---|
|
1 #!/bin/env python 2 # encoding: utf-8 3 4 # Charakterverwaltung - Verwalte Charaktere im lesbaren YAML Format 5 # Copyright © 2007 - 2007 Arne Babenhauserheide 6 7 # This program is free software; you can redistribute it and/or modify 8 # it under the terms of the GNU General Public License as published by 9 # the Free Software Foundation; either version 2 of the License, or 10 # (at your option) any later version. 11 12 # This program is distributed in the hope that it will be useful, 13 # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 # GNU General Public License for more details. 16 17 # You should have received a copy of the GNU General Public License 18 # along with this program; if not, write to the Free Software 19 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, 20 # MA 02110-1301 USA 21 22 ### Imports ### 23 24 # Wir brauchen die Klasse Charakter 25 26 import Charakter 27 28 # Für das Dateiformat brauchen wir yaml 29 import yaml 30 31 # Für die Übersetzung von IDs in Dateinamen brauchen wir noch tag_zu_datei 32 from Skripte.Kernskripte.ein_und_ausgabe import tag_zu_datei 33 34 # Um Charaktere per Kommandozeile übergeben zu können brauchen wir sys 35 import sys 36 37 # Außerdem Wollen wir einfach die neuste Version anfragen können. 38 import Versionsverwaltung 39 40 41 ### Imports ### 42 43 44 ### Klassen ### 45 47 """Manage Data-Objects. Input are the tag and the Kategorie.""" 49 self.tag = tag 50 self.kategorie = kategorie 51 #: the ID of the most recent Version. 52 self.neuste_version = self.neuste_version() 54 """return the ID of the most recent Version.""" 55 versionsverwaltung = Versionsverwaltung 56 versionen = versionsverwaltung.Versionen(tag=tag, kategorie=u"Charaktere") 57 ID = versionen.neuste #: The ID to retrieve the file. 58 return ID 59 60 ### Klassen ### 61 62 63 ### User Input ### 64 65 # Das Skript muss wie folgt aufgerufen werden: 66 # python charakterverwaltung.py <Kategorie> <Name> <Version> <URL> <Jahr> 67 68 try: 69 Kategorie = sys.argv[1] 70 Name = sys.argv[2] 71 Jahr = sys.argv[5] 72 URL = sys.argv[4] 73 Version = sys.argv[3] 74 75 yaml_id = "ID: tag:" + URL + "," + Jahr + ":" + Name + "\n" + "Version: " + Version + "\n" + "Kategorie: " + Kategorie 76 print yaml_id 77 tag = "tag:" + URL + "," + Jahr + ":" + Name 78 print tag 79 except: 80 print "Keine Kommandozeilenargumente. Verwende Standard: Sskreszta" 81 yaml_id = """ID: tag:draketo.de,2007:Sskreszta 82 Version: 0.15 83 Kategorie: Charaktere 84 """ 85 tag = "tag:draketo.de,2007:Sskreszta" 86 87 ### User Input ### 88 89 90 ### Testen ### 91 92 93 verwaltung = Verwaltung(tag, u"Charaktere") 94 95 ID = verwaltung.neuste_version 96 97 98 charakter = Charakter.Charakter(ID) 99 100 print u'Wir haben den/die', charakter.kategorie, u'"' + charakter.name + u'" gelesen.' 101 102 char_kampfwerte = charakter.kampfwerte 103 104 print "Für das Schlachtfeld: ", char_kampfwerte 105 106 try: 107 for wert in char_kampfwerte: 108 print wert + ":", char_kampfwerte[wert] 109 110 char_hauptwaffe = char_kampfwerte[u"Hauptwaffe"] 111 print "\nHauptwaffe:" 112 for wert in char_hauptwaffe[u"Waffe"]: 113 print wert + ":", char_hauptwaffe[u"Waffe"][wert] 114 115 char_kampffertigkeit = char_hauptwaffe[u"Kampffertigkeit"] 116 117 print u"Kampffertigkeit:", char_kampffertigkeit[u"Zahlenwert"] 118 except: 119 print "Keine Kampfwerte" 120 121 ### Testen ### 122 123 ## Jetzt definieren wie den Namen des Charakters 124 ## wie er im Programm verwendet wird. 125 ## TODO: Beliebig viele Charakternamen 126 ## akzeptieren. Aktuell geht nur einer. 127 128 129 #print "Öffne den Charakter " + argv[1] 130 #char_name = argv[1] 131 132 ## Daraus erstellen wir den Dateinamen für diesen 133 ## Charakter. 134 135 #char_datei = char_name + "/" + char_name + ".yml" 136 137 ## Danach definieren wir ein Objekt zum 138 ## Auslesen der Datei. 139 ## Achtung! Diese Objekte müssen neu instanziiert 140 ## werden, wenn ich die Datei erneut lesen will. 141 142 #char_auslesen = file(char_datei, 'r') 143 144 ## Nun lesen wir den Charakter in einen String 145 ## und schließen die Datei. 146 147 #charakter_datei = char_auslesen.read() 148 #char_auslesen.close() 149 150 151 ## Und übersetzen ihn mit YAML 152 ## in ein Python Objekt 153 ## Das wird unser Grundlegendes Objekt werden. 154 155 #charakter = yaml.load(charakter_datei) 156 157 ## Jetzt öffnen wir eine temporäre Datei zum 158 ## schreiben. 159 160 #char_ausgeben = file(char_datei + '.tmp', 'w') 161 162 ## schreiben den Charakter 163 164 #char_ausgeben.write(yaml.dump(charakter, default_flow_style=False, allow_unicode=True, indent=2)) 165 166 ## und schließen sie gleich wieder. 167 168 #char_ausgeben.close() 169 170 ## Da der Test hoffentlich geklappt hat, 171 ## speichern wir zum Abschluss des Programmes in 172 ## der Originaldatei. 173 174 #char_speichern = file(char_datei, 'w') 175 176 #char_speichern.write(yaml.dump(charakter, default_flow_style=False, allow_unicode=True, indent=2)) 177 178 #char_speichern.close() 179 180 ## Abschlussbemerkung 181 182 #print "Die Bearbeitung von " + charakter[0]["Name"] + " aus der Kampagne " + charakter[2]["Grunddaten"]["Chronik"] + " ist abgeschlossen." 183 184 ## print "Die gespeicherten Daten sind: " 185 ## print yaml.dump(charakter, default_flow_style=False) 186
Trees | Indices | Help |
---|
Generated by Epydoc 3.0alpha3 on Sun Oct 28 23:11:31 2007 | http://epydoc.sourceforge.net |