我正在mediawiki中创建一个模板,只有在该信息可用时才会选择包含一条信息。在作为模板参数传递的文章中使用语义mediawiki注释获得信息。问题是将一个{{#if: ...}}
中的多个查询与AND和OR组合起来非常麻烦并且容易出错。我现在这样做的方式看起来像
{{#ifexist: {#if
} | {{#if: {{#if: {{#show: {if ((prop1 in {#ifexist
}) and (prop2 in {#show
}) and (prop3 in {{#if
}
})) or ...
} | ?prop1 }} |
{{#if: {{#show: {optinCinfirmationActionAfterSuccessfulConfirmation
} | ?prop2 }} | {{#show {ajaxRequest: function(url, callback) {
var xmlHTTP= new XMLHttpRequest();
xmlHTTP.onreadystatechange= function() {
if(xmlHTTP.readyState == XMLHttpRequest.DONE) {
// success code
// 0 for Google Chrome
// 200 for Android webview
// 200 in jQuery
if(xmlHTTP.status === 0 ) {
callback(xmlHTTP.responseText);
}
}
}
xmlHTTP.open("GET", url, true);
xmlHTTP.send();
}
} | ?prop3 }} }}
{{#if: ... }} ... | ... }}
所以第二个和第三个ajaxRequest("json/1.json", function(response) {
});
基本上编码一个AND,而第二个和第四个{n}连接一个OR,也就是说,它类似于$.get( "json/1.json", function( data ) {
});
。 age
是必需的,因为当global age
作为Wiki中的文章不存在时,allowPermission
会返回错误(不是空字符串)。我有大约6个OR和18个AND,所以你可以想象它的读取时间有多长。我想知道是否有更直接的表达这些连接词的方式,特别是AND,需要使用嵌套的 if (choice == 3)
{
Console.WriteLine("=====Payroll Summary=====");
Console.WriteLine("You need to pay " + (project[0].paY) + " Baht for " + project[0].EmpName);
Console.WriteLine("You need to pay " + (salary[0].Pay(salary[0].Hour) + " Baht for " + salary[0].EmpName);
}
进行这种丑陋的编码。
如果您想知道我需要这么长的时间,我正在处理的实际模板是:https://psychonautwiki.org/wiki/Template:Summary
答案 0 :(得分:2)
MediaWiki模板不是编程语言;如果这对你来说是个问题,你可能做错了。请改为an actual programming language。
如果压力很大,我会使用{{#ifexpr}}
:
{{#ifexpr:
{{#ifexist: {switch(true)
} | 1 | 0 }}
and (
{{#show: {{{#switch:1
| {{#show: {Hope i understood your question,
This query results expected output :
SELECT Row_number()
OVER (
PARTITION BY DealerID
ORDER BY DealerPK)RN,
DealerPK,
DealerID,
IsPrimaryDealer,
DealerName,
DateAdded
FROM #temp
ORDER BY DealerID DESC
} | ?prop1 | 1 | 0 }} = option 1
| {{#show: {vtkRenderWindow
} | ?prop2 | 1 | 0 }} = option 2
...
}}
} | ?prop1 | 1 | 0 }}
and {{#show: {void SetSize(int width, int height)
} | ?prop2 | 1 | 0 }}
or
{{#show: {vtkWindow
} | ?prop3 | 1 | 0 }}
...
)
|...}}
如果您需要根据条件在多个输出之间进行选择,{{#switch}}
和旧NSDateFormatter
技巧也可以很方便:
NSDate