array
functions
singleton
@function singleton($x) { ... }
Description
Return array of a single element.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$x | Single element of resulting array. |
| —none |
Author
Fábio Macêdo Mendes
contains
@function contains($arr, $value) { ... }
Description
Return true if $arr contains $value.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$arr | Input array |
| —none |
$value | Value |
| —none |
Author
Fábio Macêdo Mendes
slice
@function slice($arr, $start, $end) { ... }
Description
Return an array slice.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$arr | Input array |
| —none |
$start | Starting index |
| —none |
$end | Ending index (or null, to slice up to the end) |
| —none |
Author
Fábio Macêdo Mendes
map
@function map($fn, $arr) { ... }
Description
Apply function to every element of array.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$fn | A binary operator function |
| —none |
$arr | Array |
| —none |
Requires
- [function]
as-func
Author
Fábio Macêdo Mendes
filter
@function filter($fn, $arr) { ... }
Description
Keep only elements of array that pass predicate function.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$fn | A binary operator function |
| —none |
$arr | Array |
| —none |
Requires
- [function]
as-func
Author
Fábio Macêdo Mendes
reduce
@function reduce($fn, $arr, $init) { ... }
Description
Reduce array by function
Arguments are passed in the same order that they appear in the the function signature, i.e., fn($x, $init, ...)
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$fn | A binary operator function |
| —none |
$arr | List |
| —none |
$init | Initial value of reduction |
| —none |
Throws
Empty array
Requires
- [function]
as-func
Author
Fábio Macêdo Mendes
separate
@function separate($fn, $arr) { ... }
Description
Keep only elements of array that pass predicate function.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$fn | A binary operator function |
| —none |
$arr | Array |
| —none |
Requires
- [function]
as-func
Author
Fábio Macêdo Mendes
chunks
@function chunks($arr, $n, $reverse) { ... }
Description
Convert array to a (linked-)list of array chunks.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$arr | Array |
| —none |
$n | Chunk size |
| —none |
$reverse | True to include chunks in reverse order (faster) |
| —none |
Requires
- [function]
lst-reverse
Author
Fábio Macêdo Mendes
join-chunks
@function join-chunks($chunks, $reverse) { ... }
Description
Join a (linked-) list of chunks created by the chunks function.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$chunks | List of chunks |
| —none |
$reverse | True if chunks are included in reverse order |
| —none |
Author
Fábio Macêdo Mendes
to-array
@function to-array($value, $keep) { ... }
Description
Convert value to list. Lists are returned as-is, maps become list of 2-tuples and other elements become a list with a single value
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$value | object to be converted |
| —none |
$keep | can be 'keys', 'values' or 'both' (default). It affects conversion of maps. |
| —none |
Author
color
functions
luminance
@function luminance($color) { ... }
Description
Calculate luminance of argument. Returns a value between 0 and 1.
See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests and https://medium.com/dev-channel/using-sass-to-automatically-pick-text-colors-4ba7645d2796
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$color | Color argument. |
| —none |
Used by
- [function]
contrast-ratio
- [function]
contrast-ratio
Author
Fábio Macêdo Mendes
contrast-ratio
@function contrast-ratio($color, $other) { ... }
Description
Calculate the contrast ratio between two colors in a scale of 0 to 1. See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$color | Color argument. |
| —none |
$other | Color to contrast with $color |
| —none |
Requires
Used by
- [function]
choose-contrast-color
- [function]
choose-contrast-color
Author
Fábio Macêdo Mendes
choose-contrast-color
@function choose-contrast-color($color, $color-1, $color-2, $bias) { ... }
Description
Choose the color that makes a better contrast with the first argument among two options $opt1
and $opt2
.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$color | Reference color |
| —none |
$color-1 | First output option |
| —none |
$color-2 | Second output option |
| —none |
$bias | A factor between -1 and 1 to artificially favor $color-1 over $color-2 |
| —none |
Requires
- [function]
contrast-ratio
- [function]
contrast-ratio
Author
Fábio Macêdo Mendes
list
functions
L
@function L() { ... }
Description
Create a list of cons cells from arguments Use as L(1, 2, 3, 4)
Parameters
None.
Used by
- [function]
to-lst
Author
Fábio Macêdo Mendes
car
@function car($xs) { ... }
Description
Returns first element of list
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
Used by
- [function]
map-join
- [function]
map-path
- [function]
map-path
- [function]
map-has-keys
- [function]
map-select
- [function]
map-exclude
- [function]
map-get-first
- [function]
str-interpolate
Author
Fábio Macêdo Mendes
cdr
@function cdr($xs) { ... }
Description
Returns list's tail
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
Used by
- [function]
map-join
- [function]
map-path
- [function]
map-path
- [function]
map-has-keys
- [function]
map-select
- [function]
map-exclude
- [function]
map-get-first
- [function]
str-interpolate
Author
Fábio Macêdo Mendes
cons
@function cons($x, $xs) { ... }
Description
Construct list, adding first argument $x in front of a list of $xs.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$x | Element |
| —none |
$xs | List |
| —none |
Used by
- [function]
lst-enumerate
Author
Fábio Macêdo Mendes
lst-length
@function lst-length($xs) { ... }
Description
Return list length
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
Author
Fábio Macêdo Mendes
lst-nth
@function lst-nth($xs, $n) { ... }
Description
Return the n-th element in list of $xs
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
$n | Requested position |
| —none |
Throws
List do not have enough elements.
Negative or zero indexes not allowed.
Author
Fábio Macêdo Mendes
lst-index
@function lst-index($xs, $value) { ... }
Description
Return the position of $value in list of $xs.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
$value | Lookup value |
| —none |
Used by
- [function]
lst-contains
Author
Fábio Macêdo Mendes
lst-contains
@function lst-contains($xs, $value) { ... }
Description
Return true if list of $xs contains $value
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
$value | Lookup value |
| —none |
Requires
- [function]
lst-index
Author
Fábio Macêdo Mendes
to-lst
@function to-lst($xs) { ... }
Description
Cast list object as a linked list.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | list or list-like object. |
| —none |
Throws
Input must be a linked list.\nHint: create one from a regular Sass array using L($xs...)
Requires
- [function]
lst-from-array
- [function]
L
Used by
- [function]
lst-reverse
- [function]
lst-stitch
- [function]
lst-stitch
- [function]
lst-join
- [function]
lst-join
- [function]
lst-intersperse
- [function]
lst-intercalate
- [function]
lst-intercalate
- [function]
lst-map
- [function]
lst-revmap
- [function]
lst-rmap
- [function]
lst-index-map
- [function]
lst-filter
- [function]
lst-separate
- [function]
lst-drop
- [function]
lst-take
- [function]
lst-sort
- [function]
lst-chunks
- [function]
lst-pairwise
- [function]
lst-enumerate
- [function]
lst-reduce
- [function]
lst-all
- [function]
lst-any
- [function]
lst-some
- [function]
lst-every
- [function]
lst-join-by
- [function]
map-join
- [function]
map-has-keys
- [function]
map-select
- [function]
map-exclude
- [function]
map-get-first
- [function]
map-path-merge
Author
Fábio Macêdo Mendes
lst-reverse
@function lst-reverse($xs) { ... }
Description
Reverse order of elements in list
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
Requires
- [function]
to-lst
Used by
- [function]
chunks
- [function]
exponential-progression
Author
Fábio Macêdo Mendes
lst-zip
@function lst-zip($xs, $ys) { ... }
Description
Zip two lists together and return a list of conses.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
$ys | List |
| —none |
Author
Fábio Macêdo Mendes
lst-stitch
@function lst-stitch($xs, $ys) { ... }
Description
Create a list with reversed $xs followed by $ys.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
$ys | List |
| —none |
Requires
Author
Fábio Macêdo Mendes
lst-join
@function lst-join($xs, $ys) { ... }
Description
Create a list with $xs followed by $ys.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
$ys | List |
| —none |
Requires
Used by
- [function]
lst-concat
- [function]
lst-sort
Author
Fábio Macêdo Mendes
lst-concat
@function lst-concat($lists) { ... }
Description
Append an array of lists together
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$lists | Array of lists |
| —none |
Requires
- [function]
lst-join
Author
Fábio Macêdo Mendes
lst-intersperse
@function lst-intersperse($xs, $value) { ... }
Description
Intersperse $value between elements of $xs lst-intersperse(L(1, 2, 3), 0) ==> L(1, 0, 2, 0, 3)
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
$value | List |
| —none |
Requires
- [function]
to-lst
Used by
- [function]
str-join
Author
Fábio Macêdo Mendes
lst-intercalate
@function lst-intercalate($xs, $ys) { ... }
Description
Intercalate elements of both lists
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | First list |
| —none |
$ys | Second list |
| —none |
Requires
Author
Fábio Macêdo Mendes
lst-repeat
@function lst-repeat($x, $n) { ... }
Description
Create list with $n repetition of $x
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$x | Value |
| —none |
$n | Number of repetitions |
| —none |
Author
Fábio Macêdo Mendes
lst-range
@function lst-range($a, $b, $step) { ... }
Description
Return a range of numbers from $a to $b (inclusive)
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$a | Starting of range |
| —none |
$b | End of range |
| —none |
$step | (optional) - Step between successive values. |
| —none |
Author
Fábio Macêdo Mendes
lst-map
@function lst-map($fn, $xs) { ... }
Description
Create a list of fn($x) for each $x in $xs.
Any additional arguments are passed to the function during function application. If order of elements is not important, use lst-revmap, since it is faster.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$fn | Function name or handle |
| —none |
$xs | List |
| —none |
Requires
Used by
- [function]
lst-rmap
Author
Fábio Macêdo Mendes
lst-revmap
@function lst-revmap($fn, $xs) { ... }
Description
Like map, but return a reversed copy of the mapped list.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$fn | Function name or handle |
| —none |
$xs | List |
| —none |
Requires
Author
Fábio Macêdo Mendes
lst-rmap
@function lst-rmap($fn, $xs) { ... }
Description
Create a list of fn($x) for each $x in $xs. Differently from lst-map, this function applies $x after the extra arguments.
Any additional arguments are passed to the function during function application.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$fn | Function name or handle |
| —none |
$xs | List |
| —none |
Requires
Author
Fábio Macêdo Mendes
lst-index-map
@function lst-index-map($fn, $xs) { ... }
Description
Create a list of fn($position, $x) for each $x in $xs. Position starts counting at 1.
Any additional arguments are passed to the function during function application.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$fn | Function name or handle |
| —none |
$xs | List |
| —none |
Requires
Author
Fábio Macêdo Mendes
lst-filter
@function lst-filter($pred, $xs) { ... }
Description
Filter list by predicate function.
Any additional arguments are passed to the function during function application.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$pred | Predicate function (i.e., function that return booleans) |
| —none |
$xs | List |
| —none |
Requires
Author
Fábio Macêdo Mendes
lst-separate
@function lst-separate($pred, $xs) { ... }
Description
Return 2 lists, with elements separated by predicate function.
Any additional arguments are passed to the function during function application.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$pred | Predicate function (i.e., function that return booleans) |
| —none |
$xs | List |
| —none |
Requires
Used by
- [function]
lst-sort
Author
Fábio Macêdo Mendes
lst-drop
@function lst-drop($xs, $n) { ... }
Description
Drop the first $n elements of list.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
$n | Number of elements |
| —none |
Requires
- [function]
to-lst
Author
Fábio Macêdo Mendes
lst-take
@function lst-take($xs, $n) { ... }
Description
Keep at most the first n elements of list
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
$n | Number of elements |
| —none |
Requires
- [function]
to-lst
Author
Fábio Macêdo Mendes
lst-sort
@function lst-sort($xs) { ... }
Description
Quick sort algorithm
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
Requires
- [function]
to-lst
- [function]
lst-separate
- [function]
lst-join
Author
Fábio Macêdo Mendes
lst-chunks
@function lst-chunks($xs, $n) { ... }
Description
Iterate in chunks of size $n.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
$n | Maximum number of elements in each chunk |
| —none |
Requires
- [function]
to-lst
Author
Fábio Macêdo Mendes
lst-pairwise
@function lst-pairwise($xs, $reverse) { ... }
Description
Iterate in chunks of 2. Similar to lst-chunks, but elements are cons cells and it is slightly more efficient.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List. |
| —none |
$reverse | If true, reverse result. |
| —none |
Requires
- [function]
to-lst
Used by
- [function]
lst-join-by
Author
Fábio Macêdo Mendes
lst-enumerate
@function lst-enumerate($xs, $start, $step) { ... }
Description
Create a list of pairs of (position value).
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | Input list |
| —none |
$start | Optional starting value (begins with 1) |
| —none |
$step | Optional step (1 if not given) |
| —none |
Requires
Author
Fábio Macêdo Mendes
lst-reduce
@function lst-reduce($fn, $xs, $init) { ... }
Description
Reduce non-empty list by function $fn.
Arguments are passed in the same order that they appear in the the function signature, i.e., fn($x, $init, ...)
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$fn | A binary operator function |
| —none |
$xs | List |
| —none |
$init | Initial value of reduction |
| —none |
Throws
Cannot reduce an empty list
Requires
Used by
Author
Fábio Macêdo Mendes
lst-sum
@function lst-sum($xs) { ... }
Description
Sum all elements of list.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
Requires
- [function]
lst-reduce
Author
Fábio Macêdo Mendes
lst-prod
@function lst-prod($xs) { ... }
Description
Multiply all elements of list.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
Requires
- [function]
lst-reduce
Author
Fábio Macêdo Mendes
lst-all
@function lst-all($xs) { ... }
Description
True if all elements are true.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
Requires
- [function]
to-lst
Author
Fábio Macêdo Mendes
lst-any
@function lst-any($xs) { ... }
Description
True if any element is true.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
Requires
- [function]
to-lst
Author
Fábio Macêdo Mendes
lst-some
@function lst-some($pred, $xs) { ... }
Description
Return true if some elements pass predicate.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$pred | Predicate function (i.e., function that return booleans) |
| —none |
$xs | List |
| —none |
Requires
Author
Fábio Macêdo Mendes
lst-every
@function lst-every($pred, $xs) { ... }
Description
Return true if all elements pass predicate.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$pred | Predicate function (i.e., function that return booleans) |
| —none |
$xs | List |
| —none |
Requires
Author
Fábio Macêdo Mendes
lst-max
@function lst-max($xs) { ... }
Description
Return maximum value in list
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
Author
Fábio Macêdo Mendes
lst-min
@function lst-min($xs) { ... }
Description
Return minimum value in list
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
Author
Fábio Macêdo Mendes
lst-join-by
@function lst-join-by($fn, $empty, $xs) { ... }
Description
Generalized join. Reduce list with $fn by applying binary partitions.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$fn | Binary operator used to join consecutive elements. |
| —none |
$empty | Neutral element to $fn (i.e., fn($x, $empty) ==> $x. |
| —none |
$xs | List. |
| —none |
Requires
- [function]
to-lst
- [function]
as-func
- [function]
lst-pairwise
Used by
- [function]
str-join
Author
Fábio Macêdo Mendes
lst-from-array
@function lst-from-array($arr) { ... }
Description
Create list from standard lists/array
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$arr | A regular Sass array. |
| —none |
Used by
- [function]
to-lst
- [function]
coerce-to-lst
- [function]
coerce-to-lst
Author
Fábio Macêdo Mendes
lst-from-map
@function lst-from-map($map) { ... }
Description
Create list from map
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$map | A regular Sass map. |
| —none |
Used by
- [function]
coerce-to-lst
Author
Fábio Macêdo Mendes
lst-flatten
@function lst-flatten($as) { ... }
Description
Flatten a list of arrays
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$as | List of arrays |
| —none |
Used by
- [function]
lst-to-array
Author
Fábio Macêdo Mendes
lst-to-array
@function lst-to-array($xs) { ... }
Description
Convert list of $xs into a Sass array.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
Requires
- [function]
lst-flatten
Author
Fábio Macêdo Mendes
lst-flatten-map
@function lst-flatten-map($maps) { ... }
Description
Flatten a list of maps
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$maps | List of maps |
| —none |
Requires
- [variable]
fn-empty-map
Used by
- [function]
lst-to-map
Author
Fábio Macêdo Mendes
lst-to-map
@function lst-to-map($xs) { ... }
Description
Transform list of pairs into a map
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | List |
| —none |
Requires
- [function]
lst-flatten-map
Author
Fábio Macêdo Mendes
coerce-to-lst
@function coerce-to-lst() { ... }
Description
Coerce object to list. Lists are returned as is.
It is more aggressive than to-lst to cast objects to list.
* Scalars are converted to single argument lists.
* Arrays are converted to lists (except when it causes ambiguity)
Parameters
None.
Requires
- [function]
lst-from-array
- [function]
lst-from-array
- [function]
lst-from-map
Used by
- [function]
map-path
- [function]
str-join
- [function]
str-interpolate
Author
Fábio Macêdo Mendes
map functions
functions
map-read
@function map-read($map, $key, $default) { ... }
Description
Return value if key exists on map, otherwise return default.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$map | map to operate from |
| —none |
$key | key |
| —none |
$default | default value. If not given and key not present, return null; |
| —none |
Used by
- [function]
map-path
Author
Fábio Macêdo Mendes
map-join
@function map-join($maps) { ... }
Description
Join a (linked-)list of maps together. Entries in later maps override previously defined values.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$maps | a list of maps |
| —none |
Requires
Author
Fábio Macêdo Mendes
to-map
@function to-map($obj) { ... }
Description
Convert argument to map. Works for lists of 2-tuples and maps.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$obj | A map or list object. |
| —none |
Throws
Cannot convert argument to map.
Author
Fábio Macêdo Mendes
map-merge-nested
@function map-merge-nested($map1, $map2) { ... }
Description
Merge two maps up to one level of nesting.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$map1 | —none |
| —none |
$map2 | —none |
| —none |
Example
map-merge-nested((foo: (x: 1, y: 3)),
(foo: (y: 2, z: 3), bar: baz));
// (foo: (x: 1, y: 2, z: 3), bar: baz)
Author
Fábio Macêdo Mendes
map-merge-deep
@function map-merge-deep($map1, $map2) { ... }
Description
Merge two maps with arbitrary nesting.
Maps are merged. If a value is a map in one dictionary, but not in the other, it is merged and saved into the ($key-name: $value). Null values are omitted.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$map1 | —none |
| —none |
$map2 | —none |
| —none |
Example
map-merge-nested((foo: (x: 1, y: (z: 3)),
(foo: (y: (w: 4), bar: baz));
// (foo: (x: 1, y: (z: 3, w: 4), bar: baz)
Author
Fábio Macêdo Mendes
map-path
@function map-path($map, $path, $default) { ... }
Description
Fetch keys in path recursively.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$map | a map to extract the value from |
| —none |
$path | (linked-)list of values |
| —none |
$default | fallback value if key is not present |
| —none |
Example
map-path(('foo': ('bar': 'baz')), L('foo', 'bar')) ==> 'baz'
Throws
Empty path
Requires
Used by
- [function]
map-path-merge
Author
Fábio Macêdo Mendes
map-has-keys
@function map-has-keys($map, $keys) { ... }
Description
Return true if map has all keys in the (linked-)list
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$map | A mapping |
| —none |
$keys | A (linked-)list of test keys. |
| —none |
Requires
Author
Fábio Macêdo Mendes
map-select
@function map-select($map, $keys) { ... }
Description
Keep only the given keys on map.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$map | A mapping |
| —none |
$keys | A (linked-)list of test keys. |
| —none |
Requires
Author
Fábio Macêdo Mendes
map-exclude
@function map-exclude($map, $keys) { ... }
Description
Remove the given keys from map
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$map | A mapping |
| —none |
$keys | A (linked-)list of test keys. |
| —none |
Requires
Author
Fábio Macêdo Mendes
map-get-first
@function map-get-first($map, $keys, $default) { ... }
Description
Select first element that matches one element from an array of keys or return the given default
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$map | map to operate from |
| —none |
$keys | array of keys |
| —none |
$default | default value. |
| —none |
Requires
Author
Fábio Macêdo Mendes
map-filter-values
@function map-filter-values($pred, $map) { ... }
Description
Filter map to include only items in which the value passes a predicate
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$pred | Function or name of boolean function that is used to filter items. |
| —none |
$map | Input map |
| —none |
Requires
- [function]
as-func
Author
Fábio Macêdo Mendes
map-apply-values
@function map-apply-values($fn, $map) { ... }
Description
Apply function to all values in map
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$fn | Function |
| —none |
$map | Input map |
| —none |
Requires
- [function]
as-func
Author
Fábio Macêdo Mendes
map-apply-keys
@function map-apply-keys($fn, $map) { ... }
Description
Apply function to the keys of a given map.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$fn | Function |
| —none |
$map | Input map |
| —none |
Requires
- [function]
as-func
- [variable]
fn-empty-map
Used by
- [function]
map-prefix-keys
Author
Fábio Macêdo Mendes
map-prefix-keys
@function map-prefix-keys($map, $prefixes...) { ... }
Description
Add prefixes to all keys of map
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$map | Input map |
| —none |
$prefixes... | Strings to add as prefix |
| —none |
Requires
- [function]
map-apply-keys
Author
Fábio Macêdo Mendes
map-path-merge
@function map-path-merge($maps, $path, $default) { ... }
Description
Extract information on $path from a (linked-)list of multiple $maps.
This function is useful to implement access to nested configuration maps, when we want to merge the results of different sources to work as a single nested mapping.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$maps | a (linked-)list of maps. |
| —none |
$path | a (linked-)list location of entry on maps. |
| —none |
$default | result this value, if given, when requested data is not present on maps |
| —none |
Throws
Maps cannot be empty
Requires
Author
Fábio Macêdo Mendes
numeric functions
functions
pc
@function pc($value) { ... }
Description
Convert argument to percentage.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$value | A number input |
| —none |
Throws
Cannot convert #{unit($value)} to percent.
Author
Fábio Macêdo Mendes
pow
@function pow($value, $n) { ... }
Description
Raise value to integer power.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$value | A number input |
| —none |
$n | Exponent |
| —none |
Author
Fábio Macêdo Mendes
exponential-progression
@function exponential-progression($ratio, $size, $initial) { ... }
Description
Return a (linked-)list with an exponential progression of numbers forming the given ratio.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$ratio | Ratio between two successive numbers |
| —none |
$size | Size of the resulting list |
| —none |
$initial | Initial value (defaults to 1) |
| —none |
Requires
- [function]
lst-reverse
Author
Fábio Macêdo Mendes
sqrt
@function sqrt() { ... }
Description
Computes the square root of a number using the Babylonian/Newton's method.
Parameters
None.
Throws
Cannot compute the square root of a negative number
Author
Fábio Macêdo Mendes
sign
@function sign() { ... }
Description
Return -1, 0 or 1 according with the sign of a numerical input.
Parameters
None.
Author
Fábio Macêdo Mendes
to-length
@function to-length($value, $unit) { ... }
Description
Add $unit
to $value
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$value | Value to add unit to |
| —none |
$unit | String representation of the unit |
| —none |
Throws
Invalid unit
#{$unit}
.
Used by
- [function]
to-number
Author
Hugo Giraudel
to-number
@function to-number($value) { ... }
Description
Convert value to number See: https://www.sassmeister.com/gist/9fa19d254864f33d4a80
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$value | Input string |
| —none |
Throws
Value for
to-number
should be a number or a string.
Requires
- [function]
to-length
Author
Hugo Giraudel
string functions
functions
str-partition
@function str-partition($st, $sep) { ... }
Description
Partition string into separator and return an array of (prefix, sep, postfix). If element is not found on string, return (st, '', ''). In all cases, $st == str.join(L(str-partition($st)...))
.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$st | String |
| —none |
$sep | Separator |
| —none |
Author
Fábio Macêdo Mendes
str-split
@function str-split($st, $sep) { ... }
Description
Split string into separator and return a (linked-)list of strings
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$st | Initial string |
| —none |
$sep | Separator |
| —none |
Used by
- [function]
str-replace
Author
Fábio Macêdo Mendes
str-join
@function str-join($xs, $sep) { ... }
Description
Join all values in a (linked-)list of strings into a single string.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$xs | Input list |
| —none |
$sep | Optional separator |
| —none |
Requires
- [function]
coerce-to-lst
- [function]
lst-intersperse
- [function]
lst-join-by
Used by
- [function]
str-replace
Author
Fábio Macêdo Mendes
str-replace
@function str-replace($st, $sub, $replace) { ... }
Description
Replace $sub
with $replace
in $st
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$st | Initial string |
| —none |
$sub | Substring |
| —none |
$replace | Replacement (defaults to empty string) |
| —none |
Requires
Used by
- [function]
str-interpolate
Author
Fábio Macêdo Mendes
str-starts-with
@function str-starts-with($str, $prefix) { ... }
Description
Checks if string starts with given sub-string
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$str | input string |
| —none |
$prefix | substring prefix |
| —none |
Author
Fábio Macêdo Mendes
str-ends-with
@function str-ends-with($str, $suffix-) { ... }
Description
Checks if string ends with given sub-string
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$str | input string |
| —none |
$suffix- | substring suffix |
| —none |
Author
Fábio Macêdo Mendes
str-interpolate
@function str-interpolate($st, $subs) { ... }
Description
Interpolate all substitution elements in the given template string. Interpolation points in the template string are identified as $1, $2, $3, etc and $subs is a (linked-) list of values.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$st | Template string. |
| —none |
$subs | (linked-)list of substitution values. |
| —none |
Requires
- [function]
coerce-to-lst
- [function]
car
- [function]
cdr
- [function]
str-replace
Author
Fábio Macêdo Mendes
testing
functions
assert-eq
@function assert-eq($fst, $snd, $msg) { ... }
Description
Assert equality on unit tests
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$fst | First argument |
| —none |
$snd | Second argument |
| —none |
$msg | Optional message |
| —none |
Example
$do: assert-eq(join(hello, world), hello world);
Throws
#{$msg}: expect
Author
Fábio Macêdo Mendes
assert-fn
@function assert-fn($fn, $fst, $snd, $msg) { ... }
Description
Assert fn returns true when called with both arguments.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$fn | Function |
| —none |
$fst | First argument |
| —none |
$snd | Second argument |
| —none |
$msg | Optional message |
| —none |
Example
$do: assert-fn(gt, 2, 3);
Throws
#{$msg}: condition #{$fn} not met with
Requires
- [function]
call-fn
Author
Fábio Macêdo Mendes
assert-simeq
@function assert-simeq($fst, $snd, $tol, $msg) { ... }
Description
Assert approximate numerical equality
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$fst | First argument |
| —none |
$snd | Second argument |
| —none |
$tol | Maximum tolerance |
| —none |
$msg | Optional message |
| —none |
Example
$do: assert-eq(join(hello, world), hello world);
Throws
#{$msg}: expect
Author
Fábio Macêdo Mendes
General
variables
fn-empty-map
$fn-empty-map: map-remove((), null) !default;
Description
Ugly performance-enhancing functions for lists
Used by
- [function]
lst-flatten-map
- [function]
map-apply-keys
utility functions
functions
as-func
@function as-func() { ... }
Description
Convert function or string to a function handle.
Parameters
None.
Used by
- [function]
map
- [function]
filter
- [function]
reduce
- [function]
separate
- [function]
lst-map
- [function]
lst-revmap
- [function]
lst-rmap
- [function]
lst-index-map
- [function]
lst-filter
- [function]
lst-separate
- [function]
lst-reduce
- [function]
lst-some
- [function]
lst-every
- [function]
lst-join-by
- [function]
map-filter-values
- [function]
map-apply-values
- [function]
map-apply-keys
- [function]
call-fn
Author
Fábio Macêdo Mendes
call-fn
@function call-fn() { ... }
Description
Version of call(...) that accepts names and function references
Parameters
None.
Requires
- [function]
as-func
Used by
Author
Fábio Macêdo Mendes
pipe
@function pipe() { ... }
Description
Pass argument through a series of functions.
Parameters
None.
Requires
- [function]
call-fn
Author
Fábio Macêdo Mendes
pipe-2
@function pipe-2() { ... }
Description
Pass arguments pairwise through a series of functions. All intermediate functions must return lists of arguments to the following functions. The last function in the pipe can return anything.
Parameters
None.
Requires
- [function]
call-fn
Author
Fábio Macêdo Mendes
flip
@function flip() { ... }
Description
Flip the order of a 2-element list
Parameters
None.
Author
Fábio Macêdo Mendes
identity
@function identity() { ... }
Description
Return its argument
Parameters
None.
Author
Fábio Macêdo Mendes
first
@function first() { ... }
Description
Return first element of a list
Parameters
None.
Author
Fábio Macêdo Mendes
second
@function second() { ... }
Description
Return second element of a list
Parameters
None.
Author
Fábio Macêdo Mendes
first-arg
@function first-arg() { ... }
Description
Return first argument
Parameters
None.
Author
Fábio Macêdo Mendes
second-arg
@function second-arg() { ... }
Description
Return second argument
Parameters
None.
Author
Fábio Macêdo Mendes
gt
@function gt($a, $b) { ... }
Description
Return true if $a > $b
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$a | First argument |
| —none |
$b | Second argument |
| —none |
Author
Fábio Macêdo Mendes
ge
@function ge($a, $b) { ... }
Description
Return true if $a >= $b
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$a | First argument |
| —none |
$b | Second argument |
| —none |
Author
Fábio Macêdo Mendes
lt
@function lt($a, $b) { ... }
Description
Return true if $a < $b
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$a | First argument |
| —none |
$b | Second argument |
| —none |
Author
Fábio Macêdo Mendes
le
@function le($a, $b) { ... }
Description
Return true if $a <= $b
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$a | First argument |
| —none |
$b | Second argument |
| —none |
Author
Fábio Macêdo Mendes
ne
@function ne($a, $b) { ... }
Description
Return true if $a != $b
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$a | First argument |
| —none |
$b | Second argument |
| —none |
Author
Fábio Macêdo Mendes
eq
@function eq($a, $b) { ... }
Description
Return true if $a == $b
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$a | First argument |
| —none |
$b | Second argument |
| —none |
Author
Fábio Macêdo Mendes
add
@function add($a, $b) { ... }
Description
Add two numbers
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$a | First argument |
| —none |
$b | Second argument |
| —none |
Author
Fábio Macêdo Mendes
radd
@function radd($a, $b) { ... }
Description
Reverse addition (useful for strings)
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$a | First argument |
| —none |
$b | Second argument |
| —none |
Author
Fábio Macêdo Mendes
sub
@function sub($a, $b) { ... }
Description
Subtract two numbers
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$a | First argument |
| —none |
$b | Second argument |
| —none |
Author
Fábio Macêdo Mendes
op-rsub
@function op-rsub() { ... }
Description
Flipped application of sub
Parameters
None.
Author
Fábio Macêdo Mendes
mul
@function mul($a, $b) { ... }
Description
Multiply two numbers
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$a | First argument |
| —none |
$b | Second argument |
| —none |
Author
Fábio Macêdo Mendes
mul
@function mul($a, $b) { ... }
Description
Reverse multiplication
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$a | First argument |
| —none |
$b | Second argument |
| —none |
Author
Fábio Macêdo Mendes
div
@function div($a, $b) { ... }
Description
Divide two numbers
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$a | First argument |
| —none |
$b | Second argument |
| —none |
Author
Fábio Macêdo Mendes
rdiv
@function rdiv() { ... }
Description
Flipped application of div
Parameters
None.
Author
Fábio Macêdo Mendes
mod
@function mod($a, $b) { ... }
Description
Modulo division of two numbers
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$a | First argument |
| —none |
$b | Second argument |
| —none |
Author
Fábio Macêdo Mendes
rmod
@function rmod() { ... }
Description
Flipped application of mod
Parameters
None.
Author
Fábio Macêdo Mendes
not-null
@function not-null() { ... }
Description
Return true for non-null values
Parameters
None.
Author
Fábio Macêdo Mendes
negate
@function negate() { ... }
Description
Multiply number by -1 or invert boolean values
Parameters
None.
Author
Fábio Macêdo Mendes
is-even
@function is-even() { ... }
Description
Return true for even numbers
Parameters
None.
Author
Fábio Macêdo Mendes
is-odd
@function is-odd() { ... }
Description
Return true for odd numbers
Parameters
None.
Author
Fábio Macêdo Mendes
is-divisible-by
@function is-divisible-by($x, $n) { ... }
Description
Return true if $x is divisible by $n.
Parameters
parameterName | parameterDescription | parameterType | parameterDefault value |
---|---|---|---|
$x | Argument |
| —none |
$n | Divisor |
| —none |
Author
Fábio Macêdo Mendes