array

functions

singleton

@function singleton($x) { ... }

Description

Return array of a single element.

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$fn

A binary operator function

none
$arr

Array

none

Requires

Author

  • Fábio Macêdo Mendes

filter

@function filter($fn, $arr) { ... }

Description

Keep only elements of array that pass predicate function.

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$fn

A binary operator function

none
$arr

Array

none

Requires

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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$fn

A binary operator function

none
$arr

List

none
$init

Initial value of reduction

none

Throws

  • Empty array

Requires

Author

  • Fábio Macêdo Mendes

separate

@function separate($fn, $arr) { ... }

Description

Keep only elements of array that pass predicate function.

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$fn

A binary operator function

none
$arr

Array

none

Requires

Author

  • Fábio Macêdo Mendes

chunks

@function chunks($arr, $n, $reverse) { ... }

Description

Convert array to a (linked-)list of array chunks.

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$arr

Array

none
$n

Chunk size

none
$reverse

True to include chunks in reverse order (faster)

none

Requires

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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$color

Color argument.

none

Used by

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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$color

Color argument.

none
$other

Color to contrast with $color

none

Requires

Used by

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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

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

Author

  • Fábio Macêdo Mendes

car

@function car($xs) { ... }

Description

Returns first element of list

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List

none

Used by

Author

  • Fábio Macêdo Mendes

cdr

@function cdr($xs) { ... }

Description

Returns list's tail

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List

none

Used by

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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$x

Element

none
$xs

List

none

Used by

Author

  • Fábio Macêdo Mendes

lst-length

@function lst-length($xs) { ... }

Description

Return list length

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List

none
$value

Lookup value

none

Used by

Author

  • Fábio Macêdo Mendes

lst-contains

@function lst-contains($xs, $value) { ... }

Description

Return true if list of $xs contains $value

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List

none
$value

Lookup value

none

Requires

Author

  • Fábio Macêdo Mendes

to-lst

@function to-lst($xs) { ... }

Description

Cast list object as a linked list.

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault 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

Used by

Author

  • Fábio Macêdo Mendes

lst-reverse

@function lst-reverse($xs) { ... }

Description

Reverse order of elements in list

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List

none

Requires

Used by

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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List

none
$ys

List

none

Requires

Used by

Author

  • Fábio Macêdo Mendes

lst-concat

@function lst-concat($lists) { ... }

Description

Append an array of lists together

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$lists

Array of lists

none

Requires

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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List

none
$value

List

none

Requires

Used by

Author

  • Fábio Macêdo Mendes

lst-intercalate

@function lst-intercalate($xs, $ys) { ... }

Description

Intercalate elements of both lists

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$fn

Function name or handle

none
$xs

List

none

Requires

Used by

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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$pred

Predicate function (i.e., function that return booleans)

none
$xs

List

none

Requires

Used by

Author

  • Fábio Macêdo Mendes

lst-drop

@function lst-drop($xs, $n) { ... }

Description

Drop the first $n elements of list.

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List

none
$n

Number of elements

none

Requires

Author

  • Fábio Macêdo Mendes

lst-take

@function lst-take($xs, $n) { ... }

Description

Keep at most the first n elements of list

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List

none
$n

Number of elements

none

Requires

Author

  • Fábio Macêdo Mendes

lst-sort

@function lst-sort($xs) { ... }

Description

Quick sort algorithm

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List

none

Requires

Author

  • Fábio Macêdo Mendes

lst-chunks

@function lst-chunks($xs, $n) { ... }

Description

Iterate in chunks of size $n.

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List

none
$n

Maximum number of elements in each chunk

none

Requires

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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List.

none
$reverse

If true, reverse result.

none

Requires

Used 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List

none

Requires

Author

  • Fábio Macêdo Mendes

lst-prod

@function lst-prod($xs) { ... }

Description

Multiply all elements of list.

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List

none

Requires

Author

  • Fábio Macêdo Mendes

lst-all

@function lst-all($xs) { ... }

Description

True if all elements are true.

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List

none

Requires

Author

  • Fábio Macêdo Mendes

lst-any

@function lst-any($xs) { ... }

Description

True if any element is true.

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List

none

Requires

Author

  • Fábio Macêdo Mendes

lst-some

@function lst-some($pred, $xs) { ... }

Description

Return true if some elements pass predicate.

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List

none

Author

  • Fábio Macêdo Mendes

lst-min

@function lst-min($xs) { ... }

Description

Return minimum value in list

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

Used by

Author

  • Fábio Macêdo Mendes

lst-from-array

@function lst-from-array($arr) { ... }

Description

Create list from standard lists/array

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$arr

A regular Sass array.

none

Used by

Author

  • Fábio Macêdo Mendes

lst-from-map

@function lst-from-map($map) { ... }

Description

Create list from map

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$map

A regular Sass map.

none

Used by

Author

  • Fábio Macêdo Mendes

lst-flatten

@function lst-flatten($as) { ... }

Description

Flatten a list of arrays

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$as

List of arrays

none

Used by

Author

  • Fábio Macêdo Mendes

lst-to-array

@function lst-to-array($xs) { ... }

Description

Convert list of $xs into a Sass array.

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List

none

Requires

Author

  • Fábio Macêdo Mendes

lst-flatten-map

@function lst-flatten-map($maps) { ... }

Description

Flatten a list of maps

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$maps

List of maps

none

Requires

Used by

Author

  • Fábio Macêdo Mendes

lst-to-map

@function lst-to-map($xs) { ... }

Description

Transform list of pairs into a map

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

List

none

Requires

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

Used by

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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$map1nonenone
$map2nonenone

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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$map1nonenone
$map2nonenone

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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$pred

Function or name of boolean function that is used to filter items.

none
$map

Input map

none

Requires

Author

  • Fábio Macêdo Mendes

map-apply-values

@function map-apply-values($fn, $map) { ... }

Description

Apply function to all values in map

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$fn

Function

none
$map

Input map

none

Requires

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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$fn

Function

none
$map

Input map

none

Requires

Used by

Author

  • Fábio Macêdo Mendes

map-prefix-keys

@function map-prefix-keys($map, $prefixes...) { ... }

Description

Add prefixes to all keys of map

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$map

Input map

none
$prefixes...

Strings to add as prefix

none

Requires

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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$ratio

Ratio between two successive numbers

none
$size

Size of the resulting list

none
$initial

Initial value (defaults to 1)

none

Requires

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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$value

Value to add unit to

none
$unit

String representation of the unit

none

Throws

  • Invalid unit #{$unit}.

Used by

Author

  • Hugo Giraudel

to-number

@function to-number($value) { ... }

Description

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$value

Input string

none

Throws

  • Value for to-number should be a number or a string.

Requires

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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$st

Initial string

none
$sep

Separator

none

Used by

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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$xs

Input list

none
$sep

Optional separator

none

Requires

Used by

Author

  • Fábio Macêdo Mendes

str-replace

@function str-replace($st, $sub, $replace) { ... }

Description

Replace $sub with $replace in $st

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault value
$st

Initial string

none
$sub

Substring

none
$replace

Replacement (defaults to empty string)

none

Requires

Used by

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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$st

Template string.

none
$subs

(linked-)list of substitution values.

none

Requires

Author

  • Fábio Macêdo Mendes

testing

functions

assert-eq

@function assert-eq($fst, $snd, $msg) { ... }

Description

Assert equality on unit tests

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

Author

  • Fábio Macêdo Mendes

assert-simeq

@function assert-simeq($fst, $snd, $tol, $msg) { ... }

Description

Assert approximate numerical equality

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault 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

utility functions

functions

as-func

@function as-func() { ... }

Description

Convert function or string to a function handle.

Parameters

None.

Used by

Author

  • Fábio Macêdo Mendes

call-fn

@function call-fn() { ... }

Description

Version of call(...) that accepts names and function references

Parameters

None.

Requires

Used by

Author

  • Fábio Macêdo Mendes

pipe

@function pipe() { ... }

Description

Pass argument through a series of functions.

Parameters

None.

Requires

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

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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$a

First argument

none
$b

Second argument

none

Author

  • Fábio Macêdo Mendes

mul

@function mul($a, $b) { ... }

Description

Reverse multiplication

Parameters

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault 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

parameterNameparameterDescriptionparameterTypeparameterDefault value
$x

Argument

none
$n

Divisor

none

Author

  • Fábio Macêdo Mendes