Difference between revisions of "User:Glyph"

From Kerbal Space Program Wiki
Jump to: navigation, search
(How to fix API templates)
 
(56 intermediate revisions by the same user not shown)
Line 1: Line 1:
test
+
== Things that need doing on the wiki ==
  
{{Class
+
* We could use a better [[Template:Type]]. Probably something that works recursively so we can have proper links to templated types e.g. Dictionary<String, Vessel> will properly link to Vessel.
|inherits={{Type|MonoBehaviour}}
+
* Could use a template to stick at the top of API pages that urges users to contribute to the API descriptions.
|implements=<ul><li>{{Type|IDiscoverable}}</li><li>{{Type|IShipconstruct}}</li><li>{{Type|ITargetable}}</li></ul>
+
* Mark all pages in [[Category:KSP.IO_Namespace]] obsolete.
|name=Vessel
+
* Add the Namespace:blah template to API pages.
|summary=Vessels define individual ships in flight. They work essentially as a header for the set of parts that make up the ship.
+
 
}}
+
== API classes updated to KSP 1.04 ==
{{PropertiesStart}}
+
 
{{Property
+
* [[API:Vessel]]
|type=string
+
* [[API:PartModule]]
|name=landedAt
+
* [[API:Part]]
|desc=
+
 
|hasget=
+
== Classes left to do ==
|hasset=
+
 
}}
+
Error: infinite lists not supported
{{Property
+
 
|type=Part
+
== How to fix API templates ==
|name=this
+
 
|desc=
+
'''I am in the process of <s>breaking</s> fixing the API templates. API tables may look wrong for the next day or two.''' [[User:Glyph|Glyph]] ([[User talk:Glyph|talk]]) 23:07, 16 October 2015 (UTC)
|hasget=1
+
 
|hasset=
+
API templates are in a terrible state. None of their pages are clear in their intent or documentation, and the logic behind their structure does not work regardless. One of the biggest problems is generic types (link List<String>) and the solution for this, having an alternative Type template is not enough, because generic templates can be nested like Dictionary<String, List<String>>.
}}
+
 
{{Property
+
Here is a possible re-implementation using some tricks from EBNF (a language for specifying syntax).
|type=enum
+
|name=Situations
+
  // An enum that is NOT being displayed as a section on a class page, e.g. an enum on its own page.
|desc=
+
  [[Template:PageEnum]]
|hasget=
+
  |Template:PageEnumValue...  <- List of Template:PageEnumValue, without commas.
|hasset=
+
 
}}
+
  // A value of a Template:PageEnum enumeration. Do not use this inside Template:Enum, instead use Template:EnumValue.
{{Property
+
  [[Template:PageEnumValue]]
|type=bool
+
  |name=string
|name=isCommandable
+
  |value=string|default blank
|desc=
+
  |desc=string|default blank
|hasget=
+
 
|hasset=
+
  // Used at the top of class pages.
}}
+
  [[Template:Class]]
{{Property
+
  |name=string
|type=bool
+
  |summary=string|default blank
|name=packed
+
 
|desc=
+
  // Template for a list of enumerations that are part of a class.
|hasget=
+
  [[Template:Enums]]
|hasset=
+
  |enums=Template:Enum...  <- List of Template:Enum, without commas.
}}
+
 
{{Property
+
  // A section on a class page for enums belonging to that class.
|type=bool
+
  [[Template:Enum]]
|name=LandedOrSplashed
+
  |name=string
|desc=
+
  |values=Template:EnumValue...  <- List of Template:EnumValue, without commas.
|hasget=1
+
 
|hasset=1
+
  // A single enum value as part of Template:Enum. This is for enums on a class page, not enums on their own page.
}}
+
  [[Template:EnumValue]]
{{Property
+
  |name=string
|type=ActionGroupList
+
  |value=string|default blank  <- If this enum value is given an actual int value, specify that value here (without the =).
|name=ActionGroups
+
  |desc=string|default blank
|desc=
+
 
|hasget=
+
  // The Properties section of a class page.
|hasset=
+
  [[Template:Properties]]
}}
+
  |properties=Template:Property...  <- List of Template:Property, without comma.
{{Property
+
 
|type=Transform
+
  // A single property in a Template:Properties section of a class page.
|name=ReferenceTransform
+
  [[Template:Property]]
|desc=The reference transform is used to define the orientation of a vessel for controls and gauges. It defines which way is 'up' or 'forward' or which way pitch rotates, for instance. Read only. Use SetReferenceTransform to set. Defaults to vessel transform if no other transform is set.
+
  |name=string
|hasget=1
+
  |type=Template:Type
|hasset=
+
  |hasget=true|default blank
}}
+
  |hasset=true|default blank
{{Property
+
  |access=string|default blank  <- "public" or "protected"
|type=double
+
  |static=true|default blank
|name=launchTime
+
  |desc=string|default blank
|desc=
+
 
|hasget=
+
  // The Fields section of a class page.
|hasset=
+
  [[Template:Fields]]
}}
+
  |fields=Template:Field...  <- List of Template:Field templates, no comma between them.
{{Property
+
 
|type=bool
+
  // A single field in a Template:Fields section of a class page.
|name=HoldPhysics
+
  [[Template:Field]]
|desc=
+
  |name=string
|hasget=
+
  |type=Template:Type
|hasset=
+
  |access=string  <- "public" or "protected"
}}
+
  |static=true|default blank
{{Property
+
  |const=true|default blank
|type=PatchedConicSolver
+
  |initialValue=string|default blank
|name=patchedConicSolver
+
  |summary=string|default blank
|desc=
+
 
|hasget=1
+
  // The Methods section of a class page.
|hasset=
+
  [[Template:Methods]]
}}
+
  |methods=Template:Method...  <- List of Template:Method templates, no comma between them.
{{Property
+
 
|type=Vessel.Situations
+
  // A single method in a Template:Methods section of a class page.
|name=situation
+
  [[Template:Method]]
|desc=
+
  |name=string
|hasget=
+
  |returnType=Template:Type|blank  <- blank for constructor
|hasset=
+
  |access=string  <- "public" or "protected"
}}
+
  |static=true|default blank
{{PropertiesEnd}}
+
  |virtual=true|default blank
{{FieldsStart}}
+
  |args=Template:Arg, ...  <- Comma separated list of Template:Arg. Actually separated by ", " (comma and a space).
{{Field
+
  |summary=string|default blank
|type=double
+
 
|name=verticalSpeed
+
  // A single method argument.
|desc=The vertical speed of the vessel, relative to the surface of the reference body.
+
  [[Template:Arg]]
}}
+
  |name=string
{{Field
+
  |type=Template:Type
|type=Vector3
+
  |defaultValue=string|default blank  <- The default value for this argument, i.e. this is an optional argument.
|name=rb_velocity
+
  |ref=ref|out|default blank  <- If this argument is a "ref" or "out" argument, or blank for neither.
|desc=The current velocity of the Unity physics rigidbody.
+
 
}}
+
  // A type (class) and its generics, if any.
{{Field
+
  [[Template:Type]]
|type=Quaternion
+
  |name=string  <- The actual identifier for the type. List<Dictionary<Blah, Blah>> has the name List. This, and nothing else, is linked to other pages via API:{name}.
|name=srfRelRotation
+
  |array=true|default blank  <- If set true, end type with [].
|desc=The Quaternion corresponding to the vessel's rotation, relative to the surface of reference body.
+
  |generic=Template:Generic|default blank  <- If blank, this type is simple. If not, this type uses a generics template e.g. List<int> would have Template:Generic(Template:Type(int)).
}}
+
 
{{Field
+
  // A list of generic types, as part of a Template:Type.
|type=double
+
  [[Template:Generics]]
|name=staticPressure
+
  |types=Template:Type,...  <- All the types that this generic template has, comma separated.
|desc=The current static pressure of the vessel, presumably in newtons per meter squared.
 
}}
 
{{Field
 
|type=Vector3d
 
|name=acceleration
 
|desc=The current acceleration vector of the vessel.
 
}}
 
{{Field
 
|type=double
 
|name=geeForce
 
|desc=The current magnitude of gravity, in meters per second squared.
 
}}
 
{{Field
 
|type=int
 
|name=currentStage
 
|desc=Current stage of the vessel.
 
}}
 
{{Field
 
|type=ProtoVessel
 
|name=protoVessel
 
|desc=
 
}}
 
{{Field
 
|type=Vector3d
 
|name=obt_velocity
 
|desc=The orbital velocity vector of the vessel, relative to the reference body.
 
}}
 
{{Field
 
|type=Vector3d
 
|name=upAxis
 
|desc=Vector corresponding to the vessel's up facing direction.
 
}}
 
{{Field
 
|type=string
 
|name=vesselName
 
|desc=Name identifier of the vessel.
 
}}
 
{{Field
 
|type=double
 
|name=specificAcceleration
 
|desc=Specific acceleration is the vessel's potential acceleration per unit of throttle. Used to estimate burn times and such. NOTE: this value is calculated based on smoothed acceleration, so it isn't completely accurate. It will also change as the vessel's mass is reduced as fuel burns away. (it does get pretty accurate after burning for a few seconds)
 
}}
 
{{Field
 
|type=float
 
|name=heightFromTerrain
 
|desc=The vessel's altitude above the reference body's terrain, not including liquid bodies.
 
}}
 
{{Field
 
|type=OrbitDriver
 
|name=orbitDriver
 
|desc=
 
}}
 
{{Field
 
|type=FlightIntegrator
 
|name=flightIntegrator
 
|desc=
 
}}
 
{{Field
 
|type=FlightCtrlState
 
|name=ctrlState
 
|desc=The vessel's flight control state object, used for accessing and modifying user and fly-by-wire input.
 
}}
 
{{Field
 
|type=Vector3
 
|name=terrainNormal
 
|desc=The vector perpendicular to the terrain.
 
}}
 
{{Field
 
|type=static
 
|name=float
 
|desc=
 
}}
 
{{Field
 
|type=double
 
|name=pqsAltitude
 
|desc=
 
}}
 
{{Field
 
|type=double
 
|name=terrainAltitude
 
|desc=The height of the terrain, relative to the center of the reference body.
 
}}
 
{{Field
 
|type=Vector3
 
|name=angularVelocity
 
|desc=The angular velocity vector of the vessel.
 
}}
 
{{Field
 
|type=PatchedConicRenderer
 
|name=patchedConicRenderer
 
|desc=
 
}}
 
{{Field
 
|type=CelestialBody
 
|name=mainBody
 
|desc=The reference body of the vessel.
 
}}
 
{{Field
 
|type=bool
 
|name=isPersistent
 
|desc=
 
}}
 
{{Field
 
|type=OrbitTargeter
 
|name=orbitTargeter
 
|desc=
 
}}
 
{{Field
 
|type=float
 
|name=heightFromSurface
 
|desc=The height above the surface of the reference body, including liquid bodies.
 
}}
 
{{Field
 
|type=bool
 
|name=Landed
 
|desc=True if the vessel has landed.
 
}}
 
{{Field
 
|type=bool
 
|name=isEVA
 
|desc=True if the vessel is an EVA kerbal.
 
}}
 
{{Field
 
|type=bool
 
|name=HasActiveCrew
 
|desc=True if the vessel has at least one crewmember and is active (focused).
 
}}
 
{{Field
 
|type=Vector3d
 
|name=perturbation
 
|desc=
 
}}
 
{{Field
 
|type=double
 
|name=missionTime
 
|desc=
 
}}
 
{{Field
 
|type=Vector3
 
|name=CoM
 
|desc=The vector corresponding to the vessel's center of mass, relative to the vessel origin.
 
}}
 
{{Field
 
|type=double
 
|name=longitude
 
|desc=
 
}}
 
{{Field
 
|type=Part
 
|name=rootPart
 
|desc=The root part of the vessel.
 
}}
 
{{Field
 
|type=Orbit
 
|name=orbit
 
|desc=
 
}}
 
{{Field
 
|type=bool
 
|name=loaded
 
|desc=True if the vessel has loaded.
 
}}
 
{{Field
 
|type=uint
 
|name=referenceTransformId
 
|desc=
 
}}
 
{{Field
 
|type=double
 
|name=latitude
 
|desc=
 
}}
 
{{Field
 
|type=bool
 
|name=isActiveVessel
 
|desc=True if the vessel is the active vessel.
 
}}
 
{{Field
 
|type=double
 
|name=altitude
 
|desc=Height above the surface of the reference body, including liquid bodies.
 
}}
 
{{Field
 
|type=State
 
|name=state
 
|desc=
 
}}
 
{{Field
 
|type=enum
 
|name=State
 
|desc=
 
}}
 
{{Field
 
|type=Vector3
 
|name=localCoM
 
|desc=This is used for persistence purposes. Use findLocalCenterOfMass() if you just want the center of mass.
 
}}
 
{{Field
 
|type=Guid
 
|name=id
 
|desc=Unique identifier for each vessel.
 
}}
 
{{FieldsEnd}}
 
{{MethodsStart}}
 
{{StaticMethod
 
|returntype=string
 
|returndesc=
 
|name=GetMETString
 
|args=
 
|desc=
 
}}
 
{{StaticMethod
 
|returntype=string
 
|returndesc=
 
|name=GetSituationString
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=Vector3
 
|returndesc=
 
|name=findWorldCenterOfMass
 
|args=
 
|desc=Finds the world center of mass recursively from the given ship part.
 
}}
 
{{Method
 
|returntype=bool
 
|returndesc=
 
|name=checkSplashed
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=GoOffRails
 
|args=
 
|desc=puts the ship back into a simulated orbit and reenables physics
 
}}
 
{{Method
 
|returntype=OrbitDriver
 
|returndesc=
 
|name=GetOrbitDriver
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=Vector3
 
|returndesc=
 
|name=GetObtVelocity
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=FallBackReferenceTransform
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=ClearStaging
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=DestroyVesselComponents
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=ResetCollisionIgnores
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=Transform
 
|returndesc=
 
|name=GetTransform
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=ChangeWorldVelocity
 
|args=
 
|desc=change the worldspace velocity of this vessel
 
}}
 
{{Method
 
|returntype=float
 
|returndesc=
 
|name=GetHeightFromTerrain
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=string
 
|returndesc=
 
|name=GetName
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=SpawnCrew
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=float
 
|returndesc=
 
|name=GetHeightFromSurface
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=ProtoVessel
 
|returndesc=
 
|name=BackupVessel
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=FeedInputFeed
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=Vector3
 
|returndesc=
 
|name=GetSrfVelocity
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=ResumeStaging
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=Orbit
 
|returndesc=
 
|name=GetOrbit
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=SetPosition
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=printGroundContacts
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=SetWorldVelocity
 
|args=
 
|desc=set the absolute world velocity of this vessel
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=SetRotation
 
|args=
 
|desc=Sets the worldspace rotation of this vessel, and all its parts
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=DespawnCrew
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=List<ProtoCrewMember>
 
|returndesc=
 
|name=GetVesselCrew
 
|args=
 
|desc= Returns a list of ProtoCrewMembers corresponding to each kerbal on board. ProtoCrewMember contains many fields relating to the kerbals stats such as name, courage, etc.
 
}}
 
{{Method
 
|returntype=Vector3
 
|returndesc=
 
|name=findLocalCenterOfMass
 
|args=
 
|desc=Finds the local center of mass recursively from the given ship part.
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=OnLoadFlightState
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=int
 
|returndesc=
 
|name=GetCrewCount
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=OnDestroy
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=OnSaveFlightState
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=ClearToSaveStatus
 
|returndesc=
 
|name=IsClearToSave
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=Vector3
 
|returndesc=
 
|name=GetFwdVector
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=Translate
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=Vector3d
 
|returndesc=
 
|name=GetWorldPos3D
 
|args=
 
|desc=Get a double precision vector for the vessel's worldspace position (for when transform.position isn't accurate enough)
 
}}
 
{{Method
 
|returntype=Vector3
 
|returndesc=
 
|name=findLocalCenterOfPressure
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=Unload
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=StartFromBackup
 
|args=
 
|desc=Start from backup is used when the scene is being resumed, and the Vessel component is added before the parts themselves. Note that this method won't load the parts. It only creates the vessel object. To load parts, use the Vessel.Load() method.
 
}}
 
{{Method
 
|returntype=bool
 
|returndesc=
 
|name=checkVisibility
 
|args=
 
|desc=Returns true if this vessel is within the visible range of any commandable (focusable) vessel, false otherwise.
 
}}
 
{{Method
 
|returntype=int
 
|returndesc=
 
|name=GetCrewCapacity
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=float
 
|returndesc=
 
|name=GetTotalMass
 
|args=
 
|desc=Get the sum of the mass of all (physical) parts on this vessel
 
}}
 
{{Method
 
|returntype=Vessel
 
|returndesc=
 
|name=GetVessel
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=Die
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=Vector3
 
|returndesc=
 
|name=findLocalMOI
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=GoOnRails
 
|args=
 
|desc=disables physics and puts the ship into a propagated orbit
 
}}
 
{{Method
 
|returntype=bool
 
|returndesc=
 
|name=checkLanded
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=MakeInactive
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=SetReferenceTransform
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=printCollisions
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=MakeActive
 
|args=
 
|desc=
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=Initialize
 
|args=
 
|desc=Initialize is used in cases where the Vessel component is added to a ship that already exists.
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=SetPosition
 
|args={{arg|Vector3|position}}
 
|desc=Sets the worldspace position of this vessel, and all its parts
 
}}
 
{{Method
 
|returntype=void
 
|returndesc=
 
|name=Load
 
|args=
 
|desc=
 
}}
 
{{MethodsEnd}}
 

Latest revision as of 00:53, 17 October 2015

Things that need doing on the wiki

  • We could use a better Template:Type. Probably something that works recursively so we can have proper links to templated types e.g. Dictionary<String, Vessel> will properly link to Vessel.
  • Could use a template to stick at the top of API pages that urges users to contribute to the API descriptions.
  • Mark all pages in obsolete.
  • Add the Namespace:blah template to API pages.

API classes updated to KSP 1.04

Classes left to do

Error: infinite lists not supported

How to fix API templates

I am in the process of breaking fixing the API templates. API tables may look wrong for the next day or two. Glyph (talk) 23:07, 16 October 2015 (UTC)

API templates are in a terrible state. None of their pages are clear in their intent or documentation, and the logic behind their structure does not work regardless. One of the biggest problems is generic types (link List<String>) and the solution for this, having an alternative Type template is not enough, because generic templates can be nested like Dictionary<String, List<String>>.

Here is a possible re-implementation using some tricks from EBNF (a language for specifying syntax).

 // An enum that is NOT being displayed as a section on a class page, e.g. an enum on its own page.
 Template:PageEnum
 |Template:PageEnumValue...  <- List of Template:PageEnumValue, without commas.
 // A value of a Template:PageEnum enumeration. Do not use this inside Template:Enum, instead use Template:EnumValue.
 Template:PageEnumValue
 |name=string
 |value=string|default blank
 |desc=string|default blank
 // Used at the top of class pages.
 Template:Class
 |name=string
 |summary=string|default blank
 // Template for a list of enumerations that are part of a class.
 Template:Enums
 |enums=Template:Enum...  <- List of Template:Enum, without commas.
 // A section on a class page for enums belonging to that class.
 Template:Enum
 |name=string
 |values=Template:EnumValue...  <- List of Template:EnumValue, without commas.
 // A single enum value as part of Template:Enum. This is for enums on a class page, not enums on their own page.
 Template:EnumValue
 |name=string
 |value=string|default blank  <- If this enum value is given an actual int value, specify that value here (without the =).
 |desc=string|default blank
 // The Properties section of a class page.
 Template:Properties
 |properties=Template:Property...  <- List of Template:Property, without comma.
 // A single property in a Template:Properties section of a class page.
 Template:Property
 |name=string
 |type=Template:Type
 |hasget=true|default blank
 |hasset=true|default blank
 |access=string|default blank  <- "public" or "protected"
 |static=true|default blank
 |desc=string|default blank
 // The Fields section of a class page.
 Template:Fields
 |fields=Template:Field...  <- List of Template:Field templates, no comma between them.
 // A single field in a Template:Fields section of a class page.
 Template:Field
 |name=string
 |type=Template:Type
 |access=string  <- "public" or "protected"
 |static=true|default blank
 |const=true|default blank
 |initialValue=string|default blank
 |summary=string|default blank
 // The Methods section of a class page.
 Template:Methods
 |methods=Template:Method...  <- List of Template:Method templates, no comma between them.
 // A single method in a Template:Methods section of a class page.
 Template:Method
 |name=string
 |returnType=Template:Type|blank  <- blank for constructor
 |access=string  <- "public" or "protected"
 |static=true|default blank
 |virtual=true|default blank
 |args=Template:Arg, ...  <- Comma separated list of Template:Arg. Actually separated by ", " (comma and a space).
 |summary=string|default blank
 // A single method argument.
 Template:Arg
 |name=string
 |type=Template:Type
 |defaultValue=string|default blank  <- The default value for this argument, i.e. this is an optional argument.
 |ref=ref|out|default blank  <- If this argument is a "ref" or "out" argument, or blank for neither.
 // A type (class) and its generics, if any.
 Template:Type
 |name=string  <- The actual identifier for the type. List<Dictionary<Blah, Blah>> has the name List. This, and nothing else, is linked to other pages via API:{name}.
 |array=true|default blank  <- If set true, end type with [].
 |generic=Template:Generic|default blank  <- If blank, this type is simple. If not, this type uses a generics template e.g. List<int> would have Template:Generic(Template:Type(int)).
 // A list of generic types, as part of a Template:Type.
 Template:Generics
 |types=Template:Type,...  <- All the types that this generic template has, comma separated.