Template:Uses from: Difference between revisions
(Drop SMW toggle?) |
(Tweak to have {{{1}}} identify whether it's a library (or implementation, or whatever).) |
||
(16 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<div class="examplemeta libheader">'''Uses:''' [[SMW::off]]<!-- |
<div class="examplemeta libheader"><noinclude>'''Uses:''' (tool name) <small> ('''Component[s]:''' Component1, Component2, ComponentN )</small></noinclude><includeonly>'''Uses:''' [[SMW::off]]<!-- |
||
-->[[uses::{{{1}}}|{{{ |
-->[[uses::{{{1}}}/{{{2}}}|{{{2}}}]]<!-- |
||
-->{{#set:Uses |
-->{{#set:Uses {{{1}}}={{{1}}}/{{{2}}}}}<!-- |
||
⚫ | |||
-->{{#if: {{{version}}}|{{#set:Uses {{{1}}} version={{{version}}}}}<!-- |
|||
[[SMW::on]]{{#set:Uses {{{1}}} version={{{version}}}[[SMW::off]] |
|||
}}} |
|||
⚫ | |||
There must be a component N=1, for there to be a component N>1. If there's no component N=1, then there's no reason to put any of the component list artifacts in. |
There must be a component N=1, for there to be a component N>1. If there's no component N=1, then there's no reason to put any of the component list artifacts in. |
||
-->{{#if: {{{component1}}}|<!-- |
-->{{#if: {{{component1|}}}|<!-- |
||
--> <small>(<!-- |
--> <small> (<!-- |
||
Is there more than one component? |
Is there more than one component? |
||
Line 26: | Line 20: | ||
End plural/singluar #if. |
End plural/singluar #if. |
||
-->}}<!-- |
-->}}<!-- |
||
--><includeonly><!-- |
|||
-->{{#foreach: component$n$|<!-- |
-->{{#foreach: component$n$|<!-- |
||
Line 33: | Line 25: | ||
-->[[SMW::on]]<!-- |
-->[[SMW::on]]<!-- |
||
--> |
-->[[Uses {{{1}}}::{{{1}}}/{{{2}}}/{{{component$n$}}}|{{{component$n$}}}]], <!-- |
||
Ending #foreach |
|||
⚫ | |||
-->{{#set:Uses {{{1}}} version={{{version}}} component=component$n$]]<!-- |
|||
-->{{#set:Uses {{{1}}} component=component$n$ version={{{version}}}]]<!-- |
|||
Ending #if {{{version}}} |
|||
-->}}<!-- |
-->}}<!-- |
||
Ending # |
Ending #if componentN |
||
-->}}<!-- |
-->}}<!-- |
||
Only apply </small> if we have components. |
|||
Ending #if {{{componentN}}} |
|||
⚫ | |||
--> )</small> <!-- |
|||
-->}}<!-- |
-->}}<!-- |
||
Ending examplemeta div. |
Ending examplemeta div. |
||
--></includeonly |
--></includeonly></div><!-- |
||
--><noinclude> |
--><noinclude> |
||
This template is intended to handle the case where a |
This template is intended to handle the case where a {{{1}}} has many components within it (examples of this include CPAN, RubyGems and Tcllib). It has two required parameters: <tt><nowiki>{{</nowiki>uses from|</tt>''{{{1}}}''<tt>|</tt>''component''<tt><nowiki>}}</nowiki></tt>. The ''{{{1}}}'' is the name of the overall {{{1}}} of components (which should also be the name of a category here on RC) and the ''component'' is the name of the component within it (which can be almost any string). |
||
==Discussion== |
==Discussion== |
||
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.) |
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}}: |
|||
* Associates the page with the {{{1}}}: |
|||
* Use {{{1}}} as the library name. |
|||
** Semantically, as <tt><nowiki>[[Uses {{{1}}}::{{{2}}}]</nowiki></tt> |
|||
** As part of <tt>[[:Category:{{{2}}}]]</tt> (though this may eventually change) |
|||
** By linking to <tt>[[{{{1}}}/{{{2}}}]]</tt>. |
|||
* Associates the page with each component specified |
|||
** Semantically, as <tt><nowiki>[[Uses {{{1}}}::{{{2}}}/{{{componentN}}}]]</nowiki></tt> (Placing the component as a subpage of the {{{1}}} |
|||
** By linking to <tt><nowiki>[[{{{1}}}/{{{2}}}/{{{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 {{{1}}} 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. |
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> |
{{template}}[[Category:Example description templates]]</noinclude> |
Latest revision as of 17:11, 20 November 2010
This template is intended to handle the case where a {{{1}}} has many components within it (examples of this include CPAN, RubyGems and Tcllib). It has two required parameters: {{uses from|{{{1}}}|component}}. The {{{1}}} is the name of the overall {{{1}}} of components (which should also be the name of a category here on RC) and the component is the name of the component within it (which can be almost any string).
Discussion
This template is derived from {{tcllib}}, and seeks to have a similar aim, except more generically, and as a potential eventual replacement for {{libheader}} and {{works with}}. (And {{tcllib}}, if it achieves sufficient functionality.)
What it does
- Associates the page with the {{{1}}}:
- Semantically, as [[Uses {{{1}}}::{{{2}}}]
- As part of [[:Category:{{{2}}}]] (though this may eventually change)
- By linking to [[{{{1}}}/{{{2}}}]].
- Associates the page with each component specified
- Semantically, as [[Uses {{{1}}}::{{{2}}}/{{{componentN}}}]] (Placing the component as a subpage of the {{{1}}}
- By linking to [[{{{1}}}/{{{2}}}/{{{componentN}}}]].
What it needs to do (eventually)
- Associate {{{1}}} version information with the page.
- Associate component version information with the page.
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.