| /* @flow */ |
| "use strict"; |
| |
| const _ = require("lodash"); |
| const blurInterpolation = require("./blurInterpolation"); |
| const isStandardSyntaxValue = require("./isStandardSyntaxValue"); |
| const valueParser = require("postcss-value-parser"); |
| |
| /** |
| * Get unit from value node |
| * |
| * Returns `null` if the unit is not found. |
| */ |
| module.exports = function(node /*: Object*/) /*: ?string*/ { |
| if (!node || (node && !node.value)) { |
| return null; |
| } |
| |
| const value = blurInterpolation(node.value, "") |
| // ignore hack unit |
| .replace("\\0", "") |
| .replace("\\9", "") |
| // ignore decimal place |
| .replace(".", ""); |
| |
| if ( |
| node.type !== "word" || |
| !isStandardSyntaxValue(value) || |
| !_.isFinite(parseInt(value)) || |
| node.value[0] === "#" |
| ) { |
| return null; |
| } |
| |
| const parsedUnit = valueParser.unit(value); |
| |
| if (!parsedUnit) { |
| return null; |
| } |
| |
| return parsedUnit.unit; |
| }; |