Bartosz Dziewoński has uploaded a new change for review. https://gerrit.wikimedia.org/r/301141
Change subject: mediawiki.htmlform: Simplify parsing of 'hide-if' expressions
......................................................................
mediawiki.htmlform: Simplify parsing of 'hide-if' expressions
I'm actually not sure if this is an improvement.
Change-Id: I5dfb3d3331eb3407d8e450a73bd3a55c59067ea0
---
M resources/src/mediawiki/mediawiki.htmlform.js
1 file changed, 18 insertions(+), 45 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core
refs/changes/41/301141/1
diff --git a/resources/src/mediawiki/mediawiki.htmlform.js
b/resources/src/mediawiki/mediawiki.htmlform.js
index 4cc7f09..c08afe7 100644
--- a/resources/src/mediawiki/mediawiki.htmlform.js
+++ b/resources/src/mediawiki/mediawiki.htmlform.js
@@ -51,7 +51,7 @@
* @return {Function} return.1 Test function
*/
function hideIfParse( $el, spec ) {
- var op, i, l, v, $field, $fields, fields, func, funcs, getVal;
+ var op, i, l, v, $field, $fields, fields, method, negate, func,
funcs, getVal;
op = spec[ 0 ];
l = spec.length;
@@ -72,57 +72,30 @@
}
$fields = $( fields );
- l = funcs.length;
+ negate = false;
switch ( op ) {
- case 'AND':
- func = function () {
- var i;
- for ( i = 0; i < l; i++
) {
- if ( !funcs[ i
]() ) {
- return
false;
- }
- }
- return true;
- };
- break;
-
- case 'OR':
- func = function () {
- var i;
- for ( i = 0; i < l; i++
) {
- if ( funcs[ i
]() ) {
- return
true;
- }
- }
- return false;
- };
- break;
-
case 'NAND':
- func = function () {
- var i;
- for ( i = 0; i < l; i++
) {
- if ( !funcs[ i
]() ) {
- return
true;
- }
- }
- return false;
- };
+ negate = true;
+ /* falls through */
+ case 'AND':
+ method = 'every';
break;
-
case 'NOR':
- func = function () {
- var i;
- for ( i = 0; i < l; i++
) {
- if ( funcs[ i
]() ) {
- return
false;
- }
- }
- return true;
- };
+ negate = true;
+ /* falls through */
+ case 'OR':
+ method = 'some';
break;
}
+ func = function () {
+ // This calls funcs.some() or
funcs.every()
+ var result = funcs[ method ]( function
( f ) {
+ return f();
+ } );
+ return negate ? !result : result;
+ };
+
return [ $fields, func ];
case 'NOT':
--
To view, visit https://gerrit.wikimedia.org/r/301141
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I5dfb3d3331eb3407d8e450a73bd3a55c59067ea0
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Bartosz Dziewoński <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
