Difference between revisions of "User:Glyph"
From Kerbal Space Program Wiki
Line 14: | Line 14: | ||
Error: infinite lists not supported | Error: infinite lists not supported | ||
+ | |||
+ | == How to fix API templates == | ||
+ | |||
+ | 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. Using special generics tags is not enough. | ||
+ | |||
+ | Here is a possible re-implementation using some tricks from EBNF (a language for specifying syntax). | ||
+ | |||
+ | Template:Class | ||
+ | |name=string | ||
+ | |summary=string|default blank | ||
+ | |||
+ | Template:Properties | ||
+ | |properties=Template:Property... <- List of Template:Property templates, no comma between them. | ||
+ | |||
+ | Template:Property | ||
+ | |name=string | ||
+ | |type=Template:Type | ||
+ | |access=string <- "public" or "protected" | ||
+ | |get=true|default blank | ||
+ | |set=true|default blank | ||
+ | |summary=string|default blank | ||
+ | |||
+ | Template:Fields | ||
+ | |fields=Template:Field... <- List of Template:Field templates, no comma between them. | ||
+ | |||
+ | 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 | ||
+ | |||
+ | Template:Methods | ||
+ | |methods=Template:Method... <- List of Template:Method templates, no comma between them. | ||
+ | |||
+ | Template:Method | ||
+ | |name=string | ||
+ | |returnType=Template:Type|blank <- blank for constructor | ||
+ | |access=string <- "public" or "protected" | ||
+ | |static=true|default blank | ||
+ | |virtual=true|default blank | ||
+ | |summary=string|default blank | ||
+ | |||
+ | 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)). | ||
+ | |||
+ | Template:Generic | ||
+ | |types=Template:Type,... <- All the types that this generic template has, comma separated. |
Revision as of 07:46, 14 October 2015
Contents
Things that need doing
- PropertiesStart and PropertiesEnd templates to be replaced with Properties to fit in line with Methods, Fields, etc.
- 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.
API classes updated to KSP 1.04
Classes left to do
Error: infinite lists not supported
How to fix API templates
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. Using special generics tags is not enough.
Here is a possible re-implementation using some tricks from EBNF (a language for specifying syntax).
Template:Class |name=string |summary=string|default blank Template:Properties |properties=Template:Property... <- List of Template:Property templates, no comma between them. Template:Property |name=string |type=Template:Type |access=string <- "public" or "protected" |get=true|default blank |set=true|default blank |summary=string|default blank Template:Fields |fields=Template:Field... <- List of Template:Field templates, no comma between them. 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 Template:Methods |methods=Template:Method... <- List of Template:Method templates, no comma between them. Template:Method |name=string |returnType=Template:Type|blank <- blank for constructor |access=string <- "public" or "protected" |static=true|default blank |virtual=true|default blank |summary=string|default blank 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)). Template:Generic |types=Template:Type,... <- All the types that this generic template has, comma separated.