Thread:がか/@comment-27569068-20170320052009/@comment-26154973-20170320092600

1. Yes, with a module/Lua table per ship (Category:Player ship modules, e.g. Module:Inazuma, same for equipment and some other things).

2. Module:ShipInfo requires an utility module Module:GetArgs, so the  line gets the arguments from the initial call (i.e., , not  , there is   function in Module:Utils that can get both, which is useful when you want to pass a page name implicitly, e.g., to have   instead of  ), mainly  , which is   in this case. also requires Module:ShipInfoKai, which has  defined in it and also depends on other modules. You probably can implement something similar in a simpler way (and then complicate it as needed, what we have is KC specific in many places), for example, in Module:Utils there is  function, so you can do   and use   (if  ) in your formatter (we do have an abstraction layer though, the data is accessed via Ship (also has some caching) object's accessor functions defined in Module:ShipData, it can be useful, since that layer can be changed when needed without touching all the data modules).

3. Well, what we have is edit buttons that take you to Lua tables, ability to override Lua data from template calls (those, etc.), then there is an argument that this stuff should be generated from API, so you don't need user edits in the first place, finally (IMO), wikitext is also a language and can be somewhat complicated if there is a Lua parser behind it, so it is not very different for a user whether it is a bunch of stuff in wikitext or in a Lua table (can break both).

4. The purpose of templates like ShipInfoKai is to have a nicer interface (using ShipInfoKai is nicer than doing invoke everywhere, also safesubst doesn't substitute when transcluded, but provides viewing for templates and recursive substitution when actually substituted) and also to provide documentation (Template:ShipInfoKai/doc, included via Template:Documentation). What I call proxy modules is different (and they aren't really used widely at the moment), normal data modules store data that is pulled from different places, now say you want to store data in pages (not modules) and pull it from other pages, in simple cases you can use tags like includeonly and parser functions like if, then there is DPL (though I'm not sure about using it extensively on Wikia), and then you can keep generating associated "proxy" modules for your initial pages, so you kinda pull the data from those initial pages via those modules (good if you have one or few initial pages and many client pages, so you only generate those few proxy modules and not bot-edit many client pages).