mirror of
https://github.com/medialab-prado/datamad2017.git
synced 2024-12-26 12:41:23 +01:00
92 lines
2.1 KiB
SCSS
92 lines
2.1 KiB
SCSS
|
@function wf-str-replace($string, $find, $replace, $all: true) {
|
||
|
$index: str-index($string, $find);
|
||
|
@if $index {
|
||
|
$before: str-slice($string, 1, $index - 1);
|
||
|
$after: str-slice($string, $index + str-length($find), str-length($string));
|
||
|
$string: $before + $replace + $after;
|
||
|
|
||
|
@if $all and not str-index($find, $replace) {
|
||
|
$string: wf-str-replace($string, $find, $replace);
|
||
|
}
|
||
|
}
|
||
|
@return $string;
|
||
|
}
|
||
|
|
||
|
@function wf-url-encode($string) {
|
||
|
$replacements: (
|
||
|
"!": "%21",
|
||
|
"#": "%23",
|
||
|
"$": "%24",
|
||
|
"&": "%26",
|
||
|
"'": "%27",
|
||
|
"(": "%28",
|
||
|
")": "%29",
|
||
|
"*": "%2A",
|
||
|
"+": "%2B",
|
||
|
",": "%2C",
|
||
|
"/": "%2F",
|
||
|
":": "%3A",
|
||
|
";": "%3B",
|
||
|
"=": "%3D",
|
||
|
"?": "%3F",
|
||
|
"@": "%40",
|
||
|
"[": "%5B",
|
||
|
"]": "%5D"
|
||
|
);
|
||
|
|
||
|
@each $from, $to in $replacements {
|
||
|
$string: wf-str-replace($string, $from, $to);
|
||
|
}
|
||
|
|
||
|
@return $string;
|
||
|
}
|
||
|
|
||
|
@function wf-implode($list, $seperator: ",") {
|
||
|
$string: "";
|
||
|
@for $i from 1 through length($list) {
|
||
|
$el: nth($list, $i);
|
||
|
$string: $string + $el;
|
||
|
@if ($i < length($list)) {
|
||
|
$string: $string + $seperator;
|
||
|
}
|
||
|
}
|
||
|
@return $string;
|
||
|
}
|
||
|
|
||
|
@function wf-serialize($fonts) {
|
||
|
@if type-of($fonts) == 'list' or type-of($fonts) == 'arglist' {
|
||
|
$serialized: ();
|
||
|
@each $font in $fonts {
|
||
|
$serialized: append($serialized, wf-serialize($font));
|
||
|
}
|
||
|
@return wf-implode($serialized, "|");
|
||
|
}
|
||
|
|
||
|
@if type-of($fonts) == 'map' {
|
||
|
$serialized: ();
|
||
|
@each $family, $variants in $fonts {
|
||
|
$variants: wf-implode($variants, ",");
|
||
|
$variants: wf-str-replace($variants, " ", "");
|
||
|
$serialized: append($serialized, "#{$family}:#{$variants}");
|
||
|
}
|
||
|
@return wf-serialize($serialized);
|
||
|
}
|
||
|
|
||
|
@if type-of($fonts) == 'string' {
|
||
|
@return wf-url-encode($fonts);
|
||
|
}
|
||
|
|
||
|
@warn "Unsupported font type: #{type-of($fonts)}";
|
||
|
}
|
||
|
|
||
|
@mixin web-fonts($fonts...) {
|
||
|
$web-fonts-protocol: "" !default;
|
||
|
$protocol: $web-fonts-protocol;
|
||
|
@if str-length($protocol) > 0 {
|
||
|
$protocol: $protocol + ":";
|
||
|
}
|
||
|
$url: "#{$protocol}//fonts.googleapis.com/css?family=";
|
||
|
$url: $url + wf-serialize($fonts);
|
||
|
@import url($url);
|
||
|
}
|