| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- //
- // Copyright 2021 Google LLC
- // SPDX-License-Identifier: Apache-2.0
- //
- @use 'sass:string';
- /// Checks if a string starts with a given prefix.
- ///
- /// @example - scss
- /// @debug has-prefix('var(--foo)', 'var('); // true
- ///
- /// @param {String} $string - The string to test.
- /// @param {String} $prefix - The prefix to check.
- /// @return {Boolean} True if the string starts with the given prefix.
- @function has-prefix($string, $prefix) {
- @return string.slice($string, 1, string.length($prefix)) == $prefix;
- }
- /// Checks if a string ends with a given suffix.
- ///
- /// @example - scss
- /// @debug has-suffix('var(--foo)', ')'); // true
- ///
- /// @param {String} $string - The string to test.
- /// @param {String} $suffix - The suffix to check.
- /// @return {Boolean} True if the string ends with the given suffix.
- @function has-suffix($string, $suffix) {
- @return string.slice($string, -1 * string.length($suffix)) == $suffix;
- }
- /// Trims a repeating prefix from the start of a string.
- ///
- /// @example - scss
- /// @debug trim-repeating-prefix(' foo bar ', ' '); // "foo bar "
- ///
- /// @param {String} $string - The string to trim.
- /// @param {String} $prefix - The repeating prefix string to trim.
- /// @return {String} The string with the prefix trimmed from the start.
- @function trim-repeating-prefix($string, $prefix) {
- @while has-prefix($string, $prefix) {
- $string: trim-prefix($string, $prefix);
- }
- @return $string;
- }
- /// Trims a prefix from the start of a string.
- ///
- /// @example - scss
- /// @debug trim-prefix('var(--foo)', 'var('); // "--foo)"
- ///
- /// @param {String} $string - The string to trim.
- /// @param {String} $prefix - The prefix string to trim.
- /// @return {String} The string with the prefix trimmed from the start.
- @function trim-prefix($string, $prefix) {
- @if has-prefix($string, $prefix) {
- $string: string.slice($string, string.length($prefix) + 1);
- }
- @return $string;
- }
- /// Trims a repeating suffix from the end of a string.
- ///
- /// @example - scss
- /// @debug trim-repeating-suffix(' foo bar ', ' '); // " foo bar"
- /// @debug trim-repeating-suffix('var(--foo)', ')'); // "var(--foo"
- ///
- /// @param {String} $string - The string to trim.
- /// @param {String} $suffix - The repeating suffix string to trim.
- /// @return {String} The string with the suffix trimmed from the end.
- @function trim-repeating-suffix($string, $suffix) {
- @while has-suffix($string, $suffix) {
- $string: trim-suffix($string, $suffix);
- }
- @return $string;
- }
- /// Trims a suffix from the end of a string.
- ///
- /// @example - scss
- /// @debug trim-suffix('var(--foo)', ')'); // "var(--foo"
- ///
- /// @param {String} $string - The string to trim.
- /// @param {String} $suffix - The suffix string to trim.
- /// @return {String} The string with the suffix trimmed from the end.
- @function trim-suffix($string, $suffix) {
- @if has-suffix($string, $suffix) {
- $string: string.slice($string, 1, -1 * string.length($suffix) - 1);
- }
- @return $string;
- }
- /// Trims a repeating prefix and suffix from the start and end of a string.
- ///
- /// If a suffix is not provided, the prefix is used as the suffix to trim.
- ///
- /// @example - scss
- /// @debug trim-repeating(' foo bar ', ' '); // "foo bar"
- ///
- /// @param {String} $string - The string to trim.
- /// @param {String} $prefix - The repeating prefix string to trim.
- /// @param {String} $suffix [$prefix] - The repeating suffix string to trim.
- /// @return {String} The string with the prefix and suffix trimmed.
- @function trim-repeating($string, $prefix, $suffix: $prefix) {
- @return trim-repeating-prefix(
- trim-repeating-suffix($string, $suffix),
- $prefix
- );
- }
- /// Trims a prefix and suffix from the start and end of a string.
- ///
- /// If a suffix is not provided, the prefix is used as the suffix to trim.
- ///
- /// @example - scss
- /// @debug trim('var(--foo)', 'var(', ')'); // "--foo"
- ///
- /// @param {String} $string - The string to trim.
- /// @param {String} $prefix - The prefix string to trim.
- /// @param {String} $suffix [$prefix] - The suffix string to trim.
- /// @return {String} The string with the prefix and suffix trimmed.
- @function trim($string, $prefix, $suffix: $prefix) {
- @return trim-prefix(trim-suffix($string, $suffix), $prefix);
- }
|