mirror of
https://github.com/Ragora/T2-EngineScraper.git
synced 2026-01-19 19:14:45 +00:00
Update inheritance diagram generator
This commit is contained in:
parent
a587d317af
commit
1e4fbbb53f
113
scraper.py
113
scraper.py
|
|
@ -199,57 +199,65 @@ class Scraper(object):
|
||||||
|
|
||||||
# Dictionary containing type name to inheritance list mappings
|
# Dictionary containing type name to inheritance list mappings
|
||||||
type_name_inheritance = {
|
type_name_inheritance = {
|
||||||
"HTTPObject": ["HTTPObject", "TCPObject", "SimObject"],
|
"HTTPObject": "TCPObject",
|
||||||
"FileObject": ["FileObject", "SimObject"],
|
"TCPObject": "SimObject",
|
||||||
"Item": ["Item", "ShapeBase", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
"FileObject": "SimObject",
|
||||||
"SceneObject": ["SceneObject", "NetObject", "SimObject"],
|
"Item": "ShapeBase",
|
||||||
"Player": ["Player", "Player", "ShapeBase", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
"ShapeBase": "GameBase",
|
||||||
"DebugView": ["DebugView", "GuiTextCtrl", "GuiControl", "SimGroup", "SimSet", "SimObject"],
|
"GameBase": "SceneObject",
|
||||||
"GameBase": ["GameBase", "SceneObject", "NetObject", "SimObject"],
|
"SceneObject": "NetObject",
|
||||||
"SimpleNetObject": ["SimpleNetObject", "SimObject"],
|
"NetObject": "SimObject",
|
||||||
"SimObject": ["SimObject"],
|
"Player": "ShapeBase",
|
||||||
"Canvas": ["Canvas", "GuiCanvas", "GuiControl", "SimGroup", "SimSet", "SimObject"],
|
"DebugView": "GuiTextCtrl",
|
||||||
"GuiCanvas": ["GuiCanvas", "GuiControl", "SimGroup", "SimSet", "SimObject"],
|
"GuiTextCtrl": "GuiControl",
|
||||||
"AIObjectiveQ": ["AIObjectiveQ", "SimSet", "SimObject"],
|
"GuiControl": "SimGroup",
|
||||||
"ForceFieldBare": ["ForceFieldBare", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
"SimGroup": "SimSet",
|
||||||
"PhysicalZone": ["PhysicalZone", "SceneObject", "NetObject", "SimObject" ],
|
"SimSet": "SimObject",
|
||||||
"AIConnection": ["AIConnection", "GameConnection", "GameConnection", "GameConnection", "NetConnection", "SimGroup", "SimSet", "SimObject"],
|
"Canvas": "GuiCanvas",
|
||||||
"Turret": ["Turret", "StaticShape", "ShapeBase", "GameBase", "SceneObject", "NetObject", "SimObject" ],
|
"GuiCanvas": "GuiControl",
|
||||||
"TerrainBlock": ["TerrainBlock", "SceneObject", "NetObject", "SimObject"],
|
"SimpleNetObject": "SimObject",
|
||||||
"PlayerData": ["PlayerData", "ShapeBaseData", "GameBaseData", "SimDataBlock", "SimObject"],
|
"AIObjectiveQ": "SimSet",
|
||||||
"InheriorInstance": ["InteriorInstance", "SceneObject", "NetObject", "SimObject"],
|
"ForceFieldBare": "GameBase",
|
||||||
"StaticShape": ["StaticShape", "ShapeBase", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
"AIConnection": "GameConnection",
|
||||||
"Trigger": ["Trigger", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
"GameConnection": "NetConnection",
|
||||||
"WaterBlock": ["WaterBlock", "SceneObject", "NetObject", "SimObject"],
|
"NetConnection": "SimGroup",
|
||||||
"FireballAtmosphere": ["FireballAtmosphere", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
"Turret": "StaticShape",
|
||||||
"MissionArea": ["MissionArea", "NetObject", "SimObject"],
|
"StaticShape": "ShapeBase",
|
||||||
"TSStatic": ["TSStatic", "SceneObject", "NetObject", "SimObject"],
|
"TerrainBlock": "SceneObject",
|
||||||
|
"InteriorInstance": "SceneObject",
|
||||||
|
"StaticShape": "ShapeBase",
|
||||||
|
"Trigger": "GameBase",
|
||||||
|
"WaterBlock": "SceneObject",
|
||||||
|
"FireballAtmosphere": "GameBase",
|
||||||
|
"MissionArea": "NetObject",
|
||||||
|
"TSStatic": "SceneObject",
|
||||||
# Projectile Types
|
# Projectile Types
|
||||||
"LinearProjectile": ["LinearProjectile", "Projectile", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
"LinearProjectile": "Projectile",
|
||||||
"EnergyProjectile": ["EnergyProjectile", "GrenadeProjectile", "Projectile", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
"Projectile": "GameBase",
|
||||||
"GrenadeProjectile": ["GrenadeProjectile", "Projectile", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
"EnergyProjectile": "GrenadeProjectile",
|
||||||
"TargetProjectile": ["TargetProjectile", "Projectile", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
"GrenadeProjectile": "Projectile",
|
||||||
|
"TargetProjectile": "Projectile",
|
||||||
# Vehicle Types
|
# Vehicle Types
|
||||||
"HoverVehicle": ["HoverVehicle", "Vehicle", "ShapeBase", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
"HoverVehicle": "Vehicle",
|
||||||
"FlyingVehicle": ["FlyingVehicle", "Vehicle", "ShapeBase", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
"Vehicle": "ShapeBase",
|
||||||
"WheeledVehicle": ["WheeledVehicle", "Vehicle", "ShapeBase", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
"FlyingVehicle": "Vehicle",
|
||||||
|
"WheeledVehicle": "Vehicle",
|
||||||
# Datablock Types
|
# Datablock Types
|
||||||
"HoverVehicleData": ["HoverVehicleData", "VehicleData", "ShapeBaseData", "GameBaseData", "SimDataBlock", "SimObject"],
|
"HoverVehicleData": "VehicleData",
|
||||||
"FlyingVehicleData": ["FlyingVehicleData", "VehicleData", "ShapeBaseData", "GameBaseData", "SimDataBlock", "SimObject"],
|
"VehicleData": "ShapeBaseData",
|
||||||
"WheeledVehicleData": ["WheeledVehicleData", "VehicleData", "ShapeBaseData", "GameBaseData", "SimDataBlock", "SimObject"],
|
"FlyingVehicleData": "VehicleData",
|
||||||
"ForceFieldBareData": ["ForceFieldBareData", "GameBaseData", "SimDataBlock", "SimObject"],
|
"WheeledVehicleData": "VehicleData",
|
||||||
"LinearProjectileData": ["LinearProjectileData", "ProjectileData", "GameBaseData", "SimDataBlock", "SimObject"],
|
"ForceFieldBareData": "GameBaseData",
|
||||||
"EnergyProjectileData": ["EnergyProjectileData", "GrenadeProjectileData", "ProjectileData", "GameBaseData", "SimDataBlock", "SimObject"],
|
"LinearProjectileData": "ProjectileData",
|
||||||
"GrenadeProjectileData": ["GrenadeProjectileData", "ProjectileData", "GameBaseData", "SimDataBlock", "SimObject"],
|
"EnergyProjectileData": "GrenadeProjectileData",
|
||||||
"FireballAtmosphereData": ["FireballAtmosphereData", "GameBaseData", "SimDataBlock", "SimObject"],
|
"GrenadeProjectileData": "ProjectileData",
|
||||||
"TargetProjectileData": ["TargetProjectileData", "ProjectileData", "GameBaseData", "SimDataBlock", "SimObject"],
|
"FireballAtmosphereData": "GameBaseData",
|
||||||
}
|
"TargetProjectileData": "ProjectileData",
|
||||||
"""
|
"PlayerData": "ShapeBaseData",
|
||||||
FIXME: This is a huge pile of filth used for generating the inheritance hierarchy for all the various object types.
|
"ShapeBaseData": "GameBaseData",
|
||||||
"""
|
"GameBaseData": "SimDataBlock",
|
||||||
|
"SimDataBlock": "SimObject",
|
||||||
|
}
|
||||||
|
|
||||||
# Outputs
|
# Outputs
|
||||||
global_functions = None
|
global_functions = None
|
||||||
|
|
@ -416,6 +424,15 @@ class Scraper(object):
|
||||||
current_datablock = self.datablocks[datablock_type]
|
current_datablock = self.datablocks[datablock_type]
|
||||||
current_datablock.properties[datablock_property_name] = Datablock.Property(datablock_property_name, datablock_property_address, "Bla")
|
current_datablock.properties[datablock_property_name] = Datablock.Property(datablock_property_name, datablock_property_address, "Bla")
|
||||||
|
|
||||||
|
def build_inheritance_tree(self, typename):
|
||||||
|
result = [ typename ]
|
||||||
|
|
||||||
|
while (typename in self.type_name_inheritance.keys()):
|
||||||
|
typename = self.type_name_inheritance[typename]
|
||||||
|
result.append(typename)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
# Helper Functions
|
# Helper Functions
|
||||||
def _extract_description(self, source):
|
def _extract_description(self, source):
|
||||||
desc_end = source.rfind("\"")
|
desc_end = source.rfind("\"")
|
||||||
|
|
|
||||||
27
t2src.py
27
t2src.py
|
|
@ -16,19 +16,6 @@ import string
|
||||||
|
|
||||||
import scraper
|
import scraper
|
||||||
|
|
||||||
def build_inheritance_tree(inheritance_list, type_names):
|
|
||||||
inheritance_tree = ""
|
|
||||||
|
|
||||||
for tree_element in inheritance_list:
|
|
||||||
if (tree_element in type_names):
|
|
||||||
inheritance_tree += "[[#%s]] -> " % tree_element
|
|
||||||
else:
|
|
||||||
inheritance_tree += "%s -> " % tree_element
|
|
||||||
|
|
||||||
inheritance_tree = inheritance_tree.rstrip(" -> ")
|
|
||||||
|
|
||||||
return inheritance_tree
|
|
||||||
|
|
||||||
# Main App
|
# Main App
|
||||||
class Application(object):
|
class Application(object):
|
||||||
global_method_heading = "===== Global Methods (%u total) =====\r\n"
|
global_method_heading = "===== Global Methods (%u total) =====\r\n"
|
||||||
|
|
@ -102,7 +89,8 @@ class Application(object):
|
||||||
for type_name in scrape.type_methods.keys():
|
for type_name in scrape.type_methods.keys():
|
||||||
inheritance_tree = "<Unknown>"
|
inheritance_tree = "<Unknown>"
|
||||||
if (type_name in scrape.type_name_inheritance.keys()):
|
if (type_name in scrape.type_name_inheritance.keys()):
|
||||||
inheritance_tree = build_inheritance_tree(scrape.type_name_inheritance[type_name], scrape.type_methods.keys())
|
inheritance_tree = self.build_inheritance_tree(scrape.build_inheritance_tree(type_name))
|
||||||
|
|
||||||
handle.write(self.type_name_template % (type_name, len(scrape.type_methods[type_name]), inheritance_tree))
|
handle.write(self.type_name_template % (type_name, len(scrape.type_methods[type_name]), inheritance_tree))
|
||||||
|
|
||||||
# Native Methods First
|
# Native Methods First
|
||||||
|
|
@ -129,7 +117,7 @@ class Application(object):
|
||||||
for datablock_type in scrape.datablocks.keys():
|
for datablock_type in scrape.datablocks.keys():
|
||||||
inheritance_tree = "<Unknown>"
|
inheritance_tree = "<Unknown>"
|
||||||
if (datablock_type in scrape.type_name_inheritance.keys()):
|
if (datablock_type in scrape.type_name_inheritance.keys()):
|
||||||
inheritance_tree = build_inheritance_tree(scrape.type_name_inheritance[datablock_type], scrape.type_name_inheritance[datablock_type])
|
inheritance_tree = self.build_inheritance_tree(scrape.build_inheritance_tree(datablock_type))
|
||||||
|
|
||||||
datablock = scrape.datablocks[datablock_type]
|
datablock = scrape.datablocks[datablock_type]
|
||||||
handle.write(self.datablock_heading % (datablock.name, len(datablock.properties.keys()), inheritance_tree))
|
handle.write(self.datablock_heading % (datablock.name, len(datablock.properties.keys()), inheritance_tree))
|
||||||
|
|
@ -139,6 +127,15 @@ class Application(object):
|
||||||
|
|
||||||
handle.write(self.datablock_property_template % (datablock_property.name, datablock_property.address, datablock_property.type_name))
|
handle.write(self.datablock_property_template % (datablock_property.name, datablock_property.address, datablock_property.type_name))
|
||||||
|
|
||||||
|
def build_inheritance_tree(self, tree):
|
||||||
|
result = ""
|
||||||
|
|
||||||
|
for tree_element in tree:
|
||||||
|
result += "[[#%s]] -> " % tree_element
|
||||||
|
|
||||||
|
result = result.rstrip(" -> ")
|
||||||
|
return result
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
time_before = time.time()
|
time_before = time.time()
|
||||||
Application().main()
|
Application().main()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue