UNPKG

eslint-plugin-ramda

Version:
46 lines (40 loc) 1.13 kB
'use strict'; const R = require('ramda'); // :: Node -> String const getName = R.ifElse( R.propEq('type', 'MemberExpression'), R.path(['property', 'name']), R.prop('name') ); // :: String -> Node -> Boolean const isRamdaMethod = name => R.either( R.whereEq({ type: 'Identifier', name }), R.where({ type: R.equals('MemberExpression'), object: R.whereEq({ type: 'Identifier', name: 'R' }), property: R.either( R.whereEq({ type: 'Identifier', name }), R.whereEq({ type: 'Literal', value: name }) ) }) ); // :: { name :: String, arguments :: [Node] -> Boolean } // -> Object // -> Boolean const isCalling = pattern => R.where({ type: R.equals('CallExpression'), callee: isRamdaMethod(pattern.name), arguments: pattern.arguments || R.T }); // :: Node -> Boolean const isBooleanLiteral = R.both( R.propEq('type', 'Literal'), R.propSatisfies(R.is(Boolean), 'value') ); exports.isRamdaMethod = isRamdaMethod; exports.isCalling = isCalling; exports.getName = getName; exports.isBooleanLiteral = isBooleanLiteral;