///////////////////// // // Functions // ///////////////////// // // Power math function // // Usage for standard gloden ratio values: // 2.62 = power( $golden, 2 ) // 3.62 = power( ( 1 + $golden_minor ), 4 ) // 4.25 = power( $golden, 3 ) // 5.00 = power( ( 1 + $golden_minor ), 5 ) // // @link https://github.com/adambom/Sass-Math/blob/master/math.scss // // @param num $base // @param int $exp // // @return num Base raised to the power of exponent // @function power( $base, $exp: 1 ) { // Helper variables $output: 1; // Processing @if 0 <= $exp { @for $i from 1 through $exp { $output: $output * $base; } } @else { @for $i from $exp to 0 { $output: $output / $base; } } // Output @return $output; } // /power // // Repeat CSS selectors several times // // @example // .foo { // @at-root #{ repeat_selector( &, 2 ) } { // ... // } // } // // @param int $selector The CSS selector to repeat // @param int $multiply How many times to repeat the selector? // @function repeat_selector( $selector, $multiply: 1 ) { // Helper variables $output: ''; // Processing @for $i from 1 through $multiply { $output: $output + $selector; } // Output @return $output; } // /repeat_selector // // Replace string. // // @since 2.9.0 // // @param string $search // @param string $replace // @param string $subject // @function _str_replace( $search, $replace, $subject ) { // Variables $index: str-index( $subject, $search ); // Processing @if $index { @return str-slice( $subject, 1, $index - 1 ) + $replace + _str_replace( $search, $replace, str-slice( $subject, $index + str-length( $search ) ) ); } // Output @return $subject; } // // Encode symbols for URL. // // @since 2.9.0 // // @param string $string // @function _url_encode( $url ) { // Variables $encodes: ( "%": "%25", "<": "%3C", ">": "%3E", " ": "%20", "!": "%21", "*": "%2A", "'": "%27", '"': "%22", "(": "%28", ")": "%29", ";": "%3B", ":": "%3A", "@": "%40", "&": "%26", "=": "%3D", "+": "%2B", "$": "%24", ",": "%2C", "/": "%2F", "?": "%3F", "#": "%23", "[": "%5B", "]": "%5D", ); // Processing @each $search, $replace in $encodes { $url: _str_replace( $search, $replace, $url ); } // Output @return $url; }