aboutsummaryrefslogtreecommitdiffstats
path: root/demo/src/sass/lib/decimal.scss
diff options
context:
space:
mode:
Diffstat (limited to 'demo/src/sass/lib/decimal.scss')
-rw-r--r--demo/src/sass/lib/decimal.scss79
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);
+}