v50 Steam/Premium information for editors
  • v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
  • Use this page to report any issues related to the migration.
This notice may be cached—the current version can be found here.

Difference between revisions of "User:Sphr/test/test3"

From Dwarf Fortress Wiki
Jump to navigation Jump to search
Line 66: Line 66:
 
:::*Page d: <nowiki>{{{ {{inc {{{1}}} }} }}}</nowiki>
 
:::*Page d: <nowiki>{{{ {{inc {{{1}}} }} }}}</nowiki>
 
:::"Mysterious voodoo" refers to what is on this page: [[User:Sphr/f/array2_elem]]. I don't really understand it, but I know it can be implemented in this way :) [[User:VengefulDonut|VengefulDonut]] 10:52, 9 January 2008 (EST)
 
:::"Mysterious voodoo" refers to what is on this page: [[User:Sphr/f/array2_elem]]. I don't really understand it, but I know it can be implemented in this way :) [[User:VengefulDonut|VengefulDonut]] 10:52, 9 January 2008 (EST)
 +
:::: Actually, what you've described is basically what I've been trying :)  The problem now is in the "array elements divided by |'s)".  When formatted as current (and as described as yours), the whole chunk of | delimited data gets treated as 1 parameter instead of many parameters.  so the {{{x}}} at the last step doesn't work coz the number of param is only 2 (1 for the index we want, and 2 which is the whole chunk of | delimited stuff).  think to make it free of "subst", what we need now is actually a way to reinterpret a chunk of text as proper template invocation again... or a way to represent "the rest of the elements" with what mediawiki provides now (which seems unlikely).  -- [[User:Sphr|Sphr]] 12:08, 9 January 2008 (EST)

Revision as of 17:08, 9 January 2008

array test:

3x3 array (row|col|data) : 3|3|a|b|c|d|e|f|g|h|i

element(0,0): 0

element(0,1): 1

element(0,2): 3

element(1,0): 3

element(1,1): a

element(1,2): b

element(2,0): c

element(2,1): d

element(2,2): e


{{:User:Sphr/test/test4}}

{{{ {{ :User:Sphr/f/inc_ {{ :User:Sphr/f/inc_ {{{1}}} }} }} }}}

element(0,0): {{:User:Sphr/f/array2_elem|0|0|{{subst:User:Sphr/test/test4}}}}

element(0,0): 0

element(0,0): {{{ {{:User:Sphr/f/minus_{{{4}}}|{{ :User:Sphr/f/inc_ {{ :User:Sphr/f/inc_ {{ :User:Sphr/f/inc_ {{ :User:Sphr/f/inc_{{ :User:Sphr/f/inc_ {{{4}}} }} }} }} }} }}}} }}}

{{{ {{ :User:Sphr/f/dec_ {{ :User:Sphr/f/dec_ {{ :User:Sphr/f/dec_{{ :User:Sphr/f/inc_ {{ :User:Sphr/f/inc_ {{ :User:Sphr/f/inc_ {{ :User:Sphr/f/inc_{{:User:Sphr/f/add_{{{2}}}|{{:User:Sphr/f/mult_{{{1}}} | 3 }}}} }} }} }} }} }} }} }} }}}

{{ :User:Sphr/f/array2_elem|1|1| {{{ {{ :User:Sphr/f/dec_ {{ :User:Sphr/f/dec_ {{ :User:Sphr/f/dec_{{ :User:Sphr/f/inc_ {{ :User:Sphr/f/inc_ {{ :User:Sphr/f/inc_ {{ :User:Sphr/f/inc_{{:User:Sphr/f/add_{{{2}}}|{{:User:Sphr/f/mult_{{{1}}} | 3 }}}} }} }} }} }} }} }} }} }}} }}

Is there a way to render text as template directly?



element(0,0): {{{ {{:User:Sphr/f/array2_index|{{{1}}}|{{{2}}}|{{{3}}}|{{{4}}}}} }}}

notes

notes:

have to use subst. how to do it by reference?

Possibly order of evaluation is outside in, which prob results in {{subst:User:Sphr/test/test4}} not being evaluated first.

I think you're correct about evaluation order. I think this could be solved by making the User:Sphr/f/array2_elem function recieve a reference instead of trying to pass the entire array. VengefulDonut 13:15, 8 January 2008 (EST)
lol, this is not really a programming language. There is no "passing" of variables by reference or otherwise. It is more like lexical substitution. Thus, I don't have a good way to solve the above problem yet. If only I know a way to do substring extraction in mediawiki..... -- Sphr 21:40, 8 January 2008 (EST)
I think I explained myself poorly. I thought the analogy was clearer. Since you can't substitute a line of text into a template's input (order of evaluation is wrong), you can instead include the name of another template and have your array template extract the element from there. The simplest example I can think of:
  • replace the outside {{{x}}} of User:Sphr/f/array2_elem with {{{{{5}}}|x}}. (the x refers to everything in between).
  • use {{:User:Sphr/f/array2_elem|0|0|3|3|:User:Sphr/test/test4}}.
  • change User:Sphr/test/test4 to {{:User:Sphr/test/test4/{{{1}}}}}
  • put the nececcary things in test4's subpages
  • {{:User:Sphr/f/array2_elem|0|0|3|3|:User:Sphr/test/test4}} will evaluate on the array page as {{:User:Sphr/test/test4|5}} which will evaluate as {{:User:Sphr/test/test4/5}}.

This is a dirty fix to demonstrate the idea; you could probably find something much cleaner. VengefulDonut 00:58, 9 January 2008 (EST)

ok. just to get myself orientated. From what you described, it seems that I must breakup the content of an "array" into subpages? That has been something that I wanted to avoid. Actually trying to see if there's a way to store and use "arrayed" data in an easier manner and I think creating one subpage for each element is a little overkill. Still, the need for subst atm is limiting but still somewhat useful in cases where we just need a one-time insertion of data without need to look it up. But maybe the real solution is to await the upgrade of wiki engine to support the newer parser functions.... -- Sphr 02:22, 9 January 2008 (EST)
I'm not sure if necessary to use subpages or not. It was the first thing I thought of to make the example function. My gut tells me there must be a way to make a single page that dynamically returns one element from a set. VengefulDonut 10:39, 9 January 2008 (EST)
Oh! Subpages aren't necessary. Just implement the same system you're using for the array (it seems a bit arcane to me) to make that happen :). So..
  • Page a: {{:page b|0|0|3|3|:page c))
  • Page b: (mysterious voodoo that evaluates to {{:page c|(elementnumber)}})
  • Page c: {{:page d|(elementnumber)|(array elements divided by |'s)}}
  • Page d: {{{ {{inc {{{1}}} }} }}}
"Mysterious voodoo" refers to what is on this page: User:Sphr/f/array2_elem. I don't really understand it, but I know it can be implemented in this way :) VengefulDonut 10:52, 9 January 2008 (EST)
Actually, what you've described is basically what I've been trying :) The problem now is in the "array elements divided by |'s)". When formatted as current (and as described as yours), the whole chunk of | delimited data gets treated as 1 parameter instead of many parameters. so the {{{x}}} at the last step doesn't work coz the number of param is only 2 (1 for the index we want, and 2 which is the whole chunk of | delimited stuff). think to make it free of "subst", what we need now is actually a way to reinterpret a chunk of text as proper template invocation again... or a way to represent "the rest of the elements" with what mediawiki provides now (which seems unlikely). -- Sphr 12:08, 9 January 2008 (EST)