Files
meteor/lib/util/executors/isMeteorBlockOnlyTest.js
2016-03-02 14:46:48 +01:00

29 lines
885 B
JavaScript

import { isMeteorProp } from '../ast'
/**
* Verifies a test of an IfStatement contains only checks with
* Meteor.isClient, Meteor.isServer and Meteor.isCordova.
*
* @param {node} test Test of an IfStatement (MemberExpression, LogicalExpression, UnaryExpression)
* @return {Boolean} True if test contains only Meteor locus checks
*/
export default function isMeteorBlockOnlyTest(test) {
switch (test.type) {
case 'MemberExpression':
return (
isMeteorProp(test, 'isClient') ||
isMeteorProp(test, 'isServer') ||
isMeteorProp(test, 'isCordova')
)
case 'UnaryExpression':
if (test.operator === '!') {
return isMeteorBlockOnlyTest(test.argument)
}
return false
case 'LogicalExpression':
return isMeteorBlockOnlyTest(test.left) && isMeteorBlockOnlyTest(test.right)
default:
return false
}
}