diff options
Diffstat (limited to 'demo/src/sass/lib/decimal.scss')
-rw-r--r-- | demo/src/sass/lib/decimal.scss | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/demo/src/sass/lib/decimal.scss b/demo/src/sass/lib/decimal.scss new file mode 100644 index 00000000..8cb41718 --- /dev/null +++ b/demo/src/sass/lib/decimal.scss @@ -0,0 +1,79 @@ +// _decimal.scss | MIT License | gist.github.com/terkel/4373420 + +// Round a number to specified digits. +// +// @param {Number} $number A number to round +// @param {Number} [$digits:0] Digits to output +// @param {String} [$mode:round] (round|ceil|floor) How to round a number +// @return {Number} A rounded number +// @example +// decimal-round(0.333) => 0 +// decimal-round(0.333, 1) => 0.3 +// decimal-round(0.333, 2) => 0.33 +// decimal-round(0.666) => 1 +// decimal-round(0.666, 1) => 0.7 +// decimal-round(0.666, 2) => 0.67 +// +@function decimal-round ($number, $digits: 0, $mode: round) { + $n: 1; + // $number must be a number + @if type-of($number) != number { + @warn '#{ $number } is not a number.'; + @return $number; + } + // $digits must be a unitless number + @if type-of($digits) != number { + @warn '#{ $digits } is not a number.'; + @return $number; + } @else if not unitless($digits) { + @warn '#{ $digits } has a unit.'; + @return $number; + } + @for $i from 1 through $digits { + $n: $n * 10; + } + @if $mode == round { + @return round($number * $n) / $n; + } @else if $mode == ceil { + @return ceil($number * $n) / $n; + } @else if $mode == floor { + @return floor($number * $n) / $n; + } @else { + @warn '#{ $mode } is undefined keyword.'; + @return $number; + } +} + +// Ceil a number to specified digits. +// +// @param {Number} $number A number to round +// @param {Number} [$digits:0] Digits to output +// @return {Number} A ceiled number +// @example +// decimal-ceil(0.333) => 1 +// decimal-ceil(0.333, 1) => 0.4 +// decimal-ceil(0.333, 2) => 0.34 +// decimal-ceil(0.666) => 1 +// decimal-ceil(0.666, 1) => 0.7 +// decimal-ceil(0.666, 2) => 0.67 +// +@function decimal-ceil ($number, $digits: 0) { + @return decimal-round($number, $digits, ceil); +} + +// Floor a number to specified digits. +// +// @param {Number} $number A number to round +// @param {Number} [$digits:0] Digits to output +// @return {Number} A floored number +// @example +// decimal-floor(0.333) => 0 +// decimal-floor(0.333, 1) => 0.3 +// decimal-floor(0.333, 2) => 0.33 +// decimal-floor(0.666) => 0 +// decimal-floor(0.666, 1) => 0.6 +// decimal-floor(0.666, 2) => 0.66 +// +@function decimal-floor ($number, $digits: 0) { + @return decimal-round($number, $digits, floor); +} |