コード例 #1
0
def readHomeSystem(section, fileName, lineNumber):
	blocks = section.split("\n\n")
	for block in blocks:
		lines = block.split("\n")
		for line in lines:
			if line == "":
				continue
			if line == lines[0]:
				#Section header ("Home System")
				assertNotEmpty(line, fileName, lineNumber)
				assertNotSeparator(line, fileName, lineNumber)
			elif line == lines[1]:
				#System name
				assertNotEmpty(line, fileName, lineNumber)
				assertNotSeparator(line, fileName, lineNumber)
				systemName = line.strip().rstrip(":")
				system = System(systemName, "Fixed")
			else:
				#Planet
				assertNotEmpty(line, fileName, lineNumber)
				assertNotSeparator(line, fileName, lineNumber)
				system.addPlanet(line.strip())
			lineNumber+=1
	if block != "":
		lineNumber+=1
	
	return system, lineNumber
コード例 #2
0
def readSystems(fileName, systems):
	with open(fileName, 'r') as systemsFile:
		lineNumber = 1
		sections = systemsFile.read().split("--------------------\n")
		for section in sections:
			if section != "":
				blocks = section.split("\n\n")
				for block in blocks:
					lines = block.split("\n")
					if block == blocks[0]:
						#System type/shape
						assertNumLines(lines, 1, fileName, lineNumber)
						line = lines[0]
						assertNotEmpty(line, fileName, lineNumber)
						assertNotSeparator(line, fileName, lineNumber)
						type = line.split(' ')[0]
						lineNumber += 1
					else:
						#System
						name = ""
						planets = []
						for line in lines:
							line = line.strip()
							if line == "":
								continue
							if line[-1] == ':':
								#System name
								assertNotEmpty(line, fileName, lineNumber)
								assertNotSeparator(line, fileName, lineNumber)
								name = line[:-1]
							elif (line == lines[0] and name == "") or (line == lines[1] and name != ""):
								#Expansion
								expansion = line
								assertValidExpansion(expansion, fileName, lineNumber)
							else:
								#Planet
								assertNotEmpty(line, fileName, lineNumber)
								assertNotSeparator(line, fileName, lineNumber)
								if line != "(None)":
									planets.append(line)
							lineNumber+=1
						system = System(name, type, expansion)
						id = system.getName()
						for planet in planets:
							system.addPlanet(planet)
							id += " " + planet
						id += expansion + type
						systems[id] = system
					if block != "":
						lineNumber+=1
コード例 #3
0
def readHomeSystems(fileName, races):
	with open(fileName, 'r') as homeSystemsFile:
		lineNumber = 1
		sections = homeSystemsFile.read().split("--------------------\n")
		for section in sections:
			if section != "":
				blocks = section.split("\n\n")
				for block in blocks:
					lines = block.split("\n")
					if block == blocks[0]:
						#System type/shape
						assertNumLines(lines, 1, fileName, lineNumber)
						line = lines[0]
						assertSystemType(line.strip()[:-13], fileName, lineNumber)
						assertString(line.strip()[-12:], "Home Systems", fileName, lineNumber)
						type = line.strip()[:-13]
						lineNumber += 1
					else:
						#Race block
						for line in lines:
							if line == "":
								continue
							if line == lines[0]:
								#Race name
								assertNotEmpty(line, fileName, lineNumber)
								assertNotSeparator(line, fileName, lineNumber)
								if (line.strip() == "The Creuss Gate:"):
									raceName = "The Ghosts of Creuss"
									systemName = line.strip().rstrip(":")
								else:
									assertString(line.strip()[-12:], "Home System:", fileName, lineNumber)
									systemName = line.strip().rstrip(":")
									if line.strip()[0:4] != "The ":
										raceName = "The " + line.strip()[:-13]
									else:
										raceName = line.strip()[:-13]
								assertValidRace(line.strip(), races, fileName, lineNumber)
								race = races[raceName]
								system = System(systemName, type)
								race.addHomeSystem(system)
							else:
								#Planet
								assertNotEmpty(line, fileName, lineNumber)
								assertNotSeparator(line, fileName, lineNumber)
								system.addPlanet(line.strip())
							lineNumber+=1
					if block != "":
						lineNumber+=1