UNPKG

scss-extract

Version:

Extract structured variables from scss files. Fast and accurate.

77 lines (66 loc) 2.36 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.createStructuredValue = createStructuredValue; var _sass = require('sass'); var _sass2 = _interopRequireDefault(_sass); var _util = require('./util'); var _serialize = require('./serialize'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Transform a sassValue into a structured value based on the value type */ function makeValue(sassValue) { if (sassValue instanceof _sass2.default.types.Boolean || sassValue instanceof _sass2.default.types.String) { return { value: sassValue.getValue() }; } if (sassValue instanceof _sass2.default.types.Number) { return { value: sassValue.getValue(), unit: sassValue.getUnit() }; } if (sassValue instanceof _sass2.default.types.Color) { var r = Math.round(sassValue.getR()); var g = Math.round(sassValue.getG()); var b = Math.round(sassValue.getB()); return { value: { r: r, g: g, b: b, a: sassValue.getA(), hex: '#' + (0, _util.toColorHex)(r) + (0, _util.toColorHex)(g) + (0, _util.toColorHex)(b) } }; } if (sassValue instanceof _sass2.default.types.Null) { return { value: null }; } if (sassValue instanceof _sass2.default.types.List) { var listLength = sassValue.getLength(); var listValue = []; for (var i = 0; i < listLength; i++) { listValue.push(createStructuredValue(sassValue.getValue(i))); } return { value: listValue, separator: sassValue.getSeparator() ? ',' : ' ' }; } if (sassValue instanceof _sass2.default.types.Map) { var mapLength = sassValue.getLength(); var mapValue = {}; for (var _i = 0; _i < mapLength; _i++) { // Serialize map keys of arbitrary type for extracted struct var serializedKey = (0, _serialize.serialize)(sassValue.getKey(_i)); mapValue[serializedKey] = createStructuredValue(sassValue.getValue(_i)); } return { value: mapValue }; } throw new Error('Unsupported sass variable type \'' + sassValue.constructor.name + '\''); } /** * Create a structured value definition from a sassValue object */ function createStructuredValue(sassValue) { var value = Object.assign({ type: sassValue.constructor.name }, makeValue(sassValue)); return value; }