@postcss-plugins/text-transform
Version:
A PostCSS plugin to transform the text.
46 lines (45 loc) • 1.66 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transform = exports.processParams = exports.tokenize = void 0;
const postcss_1 = __importDefault(require("postcss"));
const camelcase_1 = __importDefault(require("camelcase"));
function tokenize(str) {
return postcss_1.default.list.comma(str).map((s) => s.replace(/^\$/, ''))[0];
}
exports.tokenize = tokenize;
function processParams(params) {
const [text, transformation, result] = params.split(',').map(tokenize);
return {
text,
transformation,
result,
};
}
exports.processParams = processParams;
function transform(params) {
const { text, transformation } = params;
const firstLetter = text.charAt(0);
const restLetters = text.slice(1);
switch (transformation) {
case 'capitalize':
return `${firstLetter.toUpperCase()}${restLetters.toLowerCase()}`;
case 'camelCase':
return camelcase_1.default(text);
case 'lowerFirst':
return `${firstLetter.toLowerCase()}${restLetters}`;
case 'pascalCase':
return camelcase_1.default(text, { pascalCase: true });
case 'lowerCase':
return text.toLowerCase();
case 'upperCase':
return text.toUpperCase();
case 'upperFirst':
return `${firstLetter.toUpperCase()}${restLetters}`;
default:
throw `It can not be transformed to ${transformation}`;
}
}
exports.transform = transform;