<div class="examplemeta libheader">'''Uses:''' [[SMW::off]]<!--
-->[[uses::Library/{{{1}}}|{{{1}}}]]<!--
-->{{#set:Uses library=Library/{{{1}}}}}<!--
Removed usage of 'version'
{{#if: {{{version|}}}|
[[SMW::on]]{{#set:Uses {{{1}}} version={{{version}}}}}[[SMW::off]]
Ending #if
}}
-->[[Category:{{{1}}}]]<!--
-->[[Uses library::Library/{{{1}}}/{{{component$n$}}}|{{{component$n$}}}]], <!--
(Removed use of 'version' for now.)
{{#if: {{{version|}}}
{#set:Uses Library/{{{1}}} version={{{version}}} component={{{component$n$}}}}}
{{#set:Uses {{{1}}} component={{{component$n$}}} version={{{version}}}}}
|}}
Ending #foreach
This template is derived from {{tmpl|tcllib}}, and seeks to have a similar aim, except more generically, and as a potential eventual replacement for {{tmpl|libheader}} and {{tmpl|works with}}. (And {{tmpl|tcllib}}, if it achieves sufficient functionality.)
===What it does===
Design goals in common with {{tmpl|tcllib}}, {{tmpl|libheader}} and {{tmpl|works with}}:
* UseAssociates {{{1}}}the aspage with the library name.:
** Semantically, as <tt><nowiki>[[Uses library::{{{1}}}]</nowiki></tt>
** As part of <tt>[[:Category:{{{1}}}]]</tt> (though this may eventually change)
** By linking to <tt>[[Library/{{{1}}}]]</tt>.
* Associates the page with each component specified
** Semantically, as <tt><nowiki>[[Uses library::{{{1}}}/{{{componentN}}}]]</nowiki></tt> (Placing the component as a subpage of the library
** By linking to <tt><nowiki>[[Library/{{{1}}}/{{{componentN}}}]]</nowiki></tt>.
===What it needs to do (eventually)===
Other ultimate goals that make its behavior variously different from current {{tmpl|tcllib}}, {{tmpl|libheader}} and {{tmpl|works with}}:
* Associate library version information with the page.
* Avoid using MW categories. Use semantic properties instead. (MW categories have particular behavior when used in semantic queries.)
* Associate component version information with the page.
* Apply the semantic property <tt>'''uses::{{{1}}}'''</tt>
* Accept an undefined number of additional ''named'' arguments as components of that library. (var name might be '''componentN''') Add a semantic property to the page indicating that it uses {{{1}}}.
** <tt>uses '''{{{1}}}''' component::'''{{{component1}}}''', '''{{{component2}}}''', etc...</tt>
* Accept library version as a single named argument. (var name might be '''version''') Tag the transcluding page as using that version of library {{{1}}}.
** <tt>uses '''{{{1}}}''' version:'''{{{version}}}'''</tt>.
* For each {{{componentN}}} supplied, if any, apply
** <tt>uses '''{{{1}}}''' version '''{{{version}}}''' component::'''{{{componentN}}}'''</tt>.
** <tt>uses '''{{{1}}}''' component '''{{{componentN}}}''' version::'''{{{version}}}'''</tt>.
We can probably define a componentNver parameter, and use per-component properties of:
* <tt>uses '''{{{1}}}''' version '''{{{version}}}''' component::'''{{{componentN}}}'''</tt>.
* <tt>uses '''{{{1}}}''' component '''{{{componentN}}}''' version::'''{{{componenNver}}}'''</tt>.
* <tt>uses '''{{{1}}}''' version '''{{{version}}}''' component '''{{{componentN}}}''' version::'''{{{componenNver}}}'''</tt>.
===What it should do===
* Avoid using MediaWiki categories as possible.
The richer the relationships we can define, the more powerful the search options we'll have available.
(Unless someone can figure out a better way to apply pagename/libname/component/version with the semantic properties.)
{{template}}[[Category:Example description templates]]</noinclude>
|