This collection of functions is for testing if the value of a variable is of a certain type. For instance, is 13rem
a relative length? TRUE! Is "frosty the snowman"
and integer? FALSE!
This is likely most useful for advanced mixin and framework creators who aim to make their code more fault tolerant.
//// // A collection of function for advanced type checking // @author Kitty Giraudel //// @function is-number($value) { @return type-of($value) == 'number'; } @function is-time($value) { @return is-number($value) and index('ms' 's', unit($value)) != null; } @function is-duration($value) { @return is-time($value); } @function is-angle($value) { @return is-number($value) and index('deg' 'rad' 'grad' 'turn', unit($value)) != null; } @function is-frequency($value) { @return is-number($value) and index('Hz' 'kHz', unit($value)) != null; } @function is-integer($value) { @return is-number($value) and round($value) == $value; } @function is-relative-length($value) { @return is-number($value) and index('em' 'ex' 'ch' 'rem' 'vw' 'vh' 'vmin' 'vmax', unit($value)) != null; } @function is-absolute-length($value) { @return is-number($value) and index('cm' 'mm' 'in' 'px' 'pt' 'pc', unit($value)) != null; } @function is-percentage($value) { @return is-number($value) and unit($value) == '%'; } @function is-length($value) { @return is-relative-length($value) or is-absolute-length($value); } @function is-resolution($value) { @return is-number($value) and index('dpi' 'dpcm' 'dppx', unit($value)) != null; } @function is-position($value) { @return is-length($value) or is-percentage($value) or index('top' 'right' 'bottom' 'left' 'center', $value) != null; }
Thanks Hugo!
Hello, you can add here:
@function is-map($value) {
@return type-of($value) == ‘map’;
}
@function is-list($value) {
@return type-of($value) == ‘list’;
}