Template:Uses from: Difference between revisions

From Rosetta Code
Content added Content deleted
(Some basic usage instructions)
(→‎Discussion: Cleaned up formatting. Should hopefully be easier to read.)
Line 11: Line 11:
Other ultimate goals that make its behavior variously different from current {{tmpl|tcllib}}, {{tmpl|libheader}} and {{tmpl|works with}}:
Other ultimate goals that make its behavior variously different from current {{tmpl|tcllib}}, {{tmpl|libheader}} and {{tmpl|works with}}:
* Avoid using MW categories. Use semantic properties instead. (MW categories have particular behavior when used in semantic queries.)
* Avoid using MW categories. Use semantic properties instead. (MW categories have particular behavior when used in semantic queries.)
* Apply the semantic property '''uses::{{{1}}}'''
* 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 '''component''') Add a semantic property to the page indicating that it uses {{{1}}}. i.e. semantic syntax '''uses {{{1}}} component::{{{component}}}'''
* Accept an undefined number of additional ''named'' arguments as components of that library. (var name might be '''component''') Add a semantic property to the page indicating that it uses {{{1}}}.
** <tt>uses '''{{{1}}}''' component::'''{{{component}}}'''</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}}}. i.e. semantic syntax '''uses {{{1}}} version:{{{version}}}'''.
* Accept library version as a single named argument. (var name might be '''version''') Tag the transcluding page as using that version of library {{{1}}}.
** If {{{component}}} is supplied, also apply '''uses {{{1}}} version {{{version}}} component::{{{component}}}' and '''uses {{{1}}} component {{{component}}} version::{{{version}}}'''.
** <tt>uses '''{{{1}}}''' version:'''{{{version}}}'''</tt>.
* For each {{{component}}} supplied, if any, apply
** <tt>uses '''{{{1}}}''' version '''{{{version}}}''' component::'''{{{component}}}'''</tt>.
** <tt>uses '''{{{1}}}''' component '''{{{component}}}''' version::'''{{{version}}}'''</tt>.


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.

Revision as of 12:51, 12 November 2010

Uses: [[:Category:{{{1}}}|{{{1}}}]][[Category:{{{1}}}]] (Component: {{{2}}})

This template is intended to handle the case where a library has many components within it (examples of this include CPAN, RubyGems and Tcllib). It has two required parameters: {{uses from|library|component}}. The library is the name of the overall library 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.)

Design goals in common with {{tcllib}}, {{libheader}} and {{works with}}:

  • Use {{{1}}} as the library name.

Other ultimate goals that make its behavior variously different from current {{tcllib}}, {{libheader}} and {{works with}}:

  • Avoid using MW categories. Use semantic properties instead. (MW categories have particular behavior when used in semantic queries.)
  • Apply the semantic property uses::{{{1}}}
  • Accept an undefined number of additional named arguments as components of that library. (var name might be component) Add a semantic property to the page indicating that it uses {{{1}}}.
    • uses {{{1}}} component::{{{component}}}
  • Accept library version as a single named argument. (var name might be version) Tag the transcluding page as using that version of library {{{1}}}.
    • uses {{{1}}} version:{{{version}}}.
  • For each {{{component}}} supplied, if any, apply
    • uses {{{1}}} version {{{version}}} component::{{{component}}}.
    • uses {{{1}}} component {{{component}}} version::{{{version}}}.

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.)



This is a template. There are many others. See Category:RCTemplates for a complete list of templates.