@atlaskit/eslint-plugin-design-system
Version:
The essential plugin for use with the Atlassian Design System.
33 lines • 1.09 kB
JavaScript
import { callExpression, identifier, literal, memberExpression, property } from 'eslint-codemod-utils';
function createMemberExpressionFromArray(array) {
if (array.length === 1) {
return identifier(array[0]);
}
const property = array.pop();
return memberExpression({
object: createMemberExpressionFromArray(array),
property: identifier(property)
});
}
function getTokenNode(tokenName, fallbackValue, isFallbackMember = false) {
const callExpressionArgs = [literal({
value: `'${tokenName}'`
})];
if (fallbackValue) {
const fallback = isFallbackMember ? createMemberExpressionFromArray(fallbackValue.split('.')) : literal(fallbackValue);
callExpressionArgs.push(fallback);
}
return callExpression({
callee: identifier({
name: 'token'
}),
arguments: callExpressionArgs,
optional: false
});
}
export function getTokenProperty(propertyName, tokenName, tokenFallback, isFallbackMember = false) {
return property({
key: identifier(propertyName),
value: getTokenNode(tokenName, tokenFallback, isFallbackMember)
});
}