Template:Uses from

From Rosetta Code
Revision as of 09:07, 12 November 2010 by rosettacode>Dkf (Some basic usage instructions)
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}}}. i.e. semantic syntax 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}}}. i.e. semantic syntax uses {{{1}}} version:{{{version}}}.
    • If {{{component}}} is supplied, also apply uses {{{1}}} version {{{version}}} component::{{{component}}}' and 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.