Difference between revisions of "Transclusionism"

From Mondothèque

Line 1: Line 1:
 
This page documents some of the contraptions at work in this wiki.
 
This page documents some of the contraptions at work in this wiki.
 +
  
 
===== How to transclude labeled sections between texts: =====
 
===== How to transclude labeled sections between texts: =====
Line 6: Line 7:
 
* Edit the page and add <code><nowiki>{{RT|rawdata}}<section begin=rawdata /> </nowiki></code> before the text selection, and  <code><nowiki><section end=rawdata /></nowiki></code> at the end (take care of the '<code>/</code>', without it doesn't work);
 
* Edit the page and add <code><nowiki>{{RT|rawdata}}<section begin=rawdata /> </nowiki></code> before the text selection, and  <code><nowiki><section end=rawdata /></nowiki></code> at the end (take care of the '<code>/</code>', without it doesn't work);
 
* All the other text selections in other pages which are selected along the same common ground will be transcluded on the side of the text.
 
* All the other text selections in other pages which are selected along the same common ground will be transcluded on the side of the text.
 +
  
 
===== How it works: =====
 
===== How it works: =====
 
The section code is used by the 'Labeled Section Transclusion' extension, which looks for the tagged sections in a text, to transclude them into another text based on the assigned labels.
 
The section code is used by the 'Labeled Section Transclusion' extension, which looks for the tagged sections in a text, to transclude them into another text based on the assigned labels.
The <code><nowiki>{{RT|rawdata}}<section begin=rawdata /> </nowiki></code> instead, transcludes the RT Template, substituting the word <code>rawdata</code> in its internal code. This is the content of Template:RT:
+
The <code><nowiki>{{RT|rawdata}}<section begin=rawdata /> </nowiki></code> instead, transcludes the RT Template, substituting the word <code>rawdata</code> in its internal code, in place of <code>{{{1}}}</code>. This is the commented content of Template:RT:
<pre><nowiki><div class="side">
+
<pre><nowiki><div class="side">                                         #  Puts the trancluded sections on its own div;
{{#ask:[[Category:{{{1}}}]] |format=array |name=results}}
+
{{#ask:[[Category:{{{1}}}]] |format=array |name=results}}   #  Searches semantically for all the pages in
{{#loop: looper
+
                                                            # the requested category, puts them in an array;
   | 0
+
{{#loop: looper                                             #  Starts a loop,
   | {{#arraysize: results}}
+
   | 0                                                       #  Going from 0 to
   | {{#ifeq: {{FULLPAGENAME: {{#arrayindex: results | {{#var:looper}}  }} }} | {{FULLPAGENAME}} | |  {{#lst: {{#arrayindex: results | {{#var:looper}}  }}  | {{{1}}} }} ([[{{#arrayindex: results | {{#var:looper}}  }}]])<br /><br /> }}
+
   | {{#arraysize: results}}                                 #  the amount of pages of the array, that:
 +
   | {{#ifeq: {{FULLPAGENAME:                               #  Checks if the pagename
 +
      {{#arrayindex: results | {{#var:looper}}  }}         #  Of the current element of the array
 +
            }}  
 +
  |   {{FULLPAGENAME}}                                     #  Is the same as the page calling the loop,
 +
  |     #    In that case it skips it (no selfreference);
 +
  |  {{#lst: {{#arrayindex: results | {{#var:looper}}  }} #  Searches through the page in the loop for
 +
   | {{{1}}} }}                                             #  All the occurrences of labeled sections
 +
([[{{#arrayindex: results | {{#var:looper}}  }}]])<br /><br />  
 +
}}
 
}}</div>[[category:{{{1}}}]]
 
}}</div>[[category:{{{1}}}]]
 
</nowiki></pre>
 
</nowiki></pre>
 +
  
 
===== Necessaire: =====
 
===== Necessaire: =====

Revision as of 10:28, 27 February 2016

This page documents some of the contraptions at work in this wiki.


How to transclude labeled sections between texts:

To create links between different pages, based on some selection of text that somehow connects the pages on the bases of some common ground:

  • Think of a category that is the common ground for the link. (eg. 'rawdata'), formulate it without spaces or using underscores (eg. 'raw_data', not 'raw data' );
  • Edit the page and add {{RT|rawdata}}<section begin=rawdata /> before the text selection, and <section end=rawdata /> at the end (take care of the '/', without it doesn't work);
  • All the other text selections in other pages which are selected along the same common ground will be transcluded on the side of the text.


How it works:

The section code is used by the 'Labeled Section Transclusion' extension, which looks for the tagged sections in a text, to transclude them into another text based on the assigned labels. The {{RT|rawdata}}<section begin=rawdata /> instead, transcludes the RT Template, substituting the word rawdata in its internal code, in place of {{{1}}}. This is the commented content of Template:RT:

<div class="side">                                          #  Puts the trancluded sections on its own div;
{{#ask:[[Category:{{{1}}}]] |format=array |name=results}}   #  Searches semantically for all the pages in 
                                                            # the requested category, puts them in an array; 
{{#loop: looper                                             #  Starts a loop,
  | 0                                                       #  Going from 0 to
  | {{#arraysize: results}}                                 #  the amount of pages of the array, that:
  | {{#ifeq: {{FULLPAGENAME:                                #   Checks if the pagename
       {{#arrayindex: results | {{#var:looper}}  }}         #   Of the current element of the array
             }} 
  |   {{FULLPAGENAME}}                                      #   Is the same as the page calling the loop,
  | 							    #    In that case it skips it (no selfreference);
  |   {{#lst: {{#arrayindex: results | {{#var:looper}}  }}  #   Searches through the page in the loop for
  | {{{1}}} }}                                              #   All the occurrences of labeled sections
([[{{#arrayindex: results | {{#var:looper}}  }}]])<br /><br /> 
}}
}}</div>[[category:{{{1}}}]]


Necessaire:

Currently on top of MediaWiki and SemanticMediaWiki, the following extensions needed to be installed for the contraption to work:

  • Labeled Section Transclusion to be able to select specific sections of the texts and make connections between them;
  • Parser Functions to be able to operate statements like if in the wiki pseudo-language;
  • Arrays to create lists of objects, for example as a result of semantic queries;
  • Loops to loop between the arrays above;
  • Variables as it's needed by some of the above.

What links here