eslint-plugin-ramda
Version:
ESLint rules for use with Ramda
46 lines (40 loc) • 1.13 kB
JavaScript
;
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;