https://github.com/sha-red/compass-mixins/tree/master/lib
extended with more sass frameworks and as django app.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
3.8 KiB
82 lines
3.8 KiB
@function breakpoint-parse-query($query) { |
|
// Parse features out of an individual query |
|
$feature-holder: (); |
|
$query-holder: (); |
|
$length: length($query); |
|
|
|
@if $length == 2 { |
|
// If we've got a string/number, number/string, check to see if it's a valid string/number pair or two singles |
|
@if (type-of(nth($query, 1)) == 'string' and type-of(nth($query, 2)) == 'number') or (type-of(nth($query, 1)) == 'number' and type-of(nth($query, 2)) == 'string') { |
|
|
|
$number: ''; |
|
$value: ''; |
|
|
|
@if type-of(nth($query, 1)) == 'string' { |
|
$number: nth($query, 2); |
|
$value: nth($query, 1); |
|
} |
|
@else { |
|
$number: nth($query, 1); |
|
$value: nth($query, 2); |
|
} |
|
|
|
// If the string value can be a single value, check to see if the number passed in is a valid input for said single value. Fortunately, all current single-value options only accept unitless numbers, so this check is easy. |
|
@if breakpoint-single-string($value) { |
|
@if unitless($number) { |
|
$feature-holder: append($value, $number, space); |
|
$query-holder: append($query-holder, $feature-holder, comma); |
|
@return $query-holder; |
|
} |
|
} |
|
// If the string is a media type, split the query |
|
@if breakpoint-is-media($value) { |
|
$query-holder: append($query-holder, nth($query, 1)); |
|
$query-holder: append($query-holder, nth($query, 2)); |
|
@return $query-holder; |
|
} |
|
// If it's not a single feature, we're just going to assume it's a proper string/value pair, and roll with it. |
|
@else { |
|
$feature-holder: append($value, $number, space); |
|
$query-holder: append($query-holder, $feature-holder, comma); |
|
@return $query-holder; |
|
} |
|
|
|
} |
|
// If they're both numbers, we assume it's a double and roll with that |
|
@else if (type-of(nth($query, 1)) == 'number' and type-of(nth($query, 2)) == 'number') { |
|
$feature-holder: append(nth($query, 1), nth($query, 2), space); |
|
$query-holder: append($query-holder, $feature-holder, comma); |
|
@return $query-holder; |
|
} |
|
// If they're both strings and neither are singles, we roll with that. |
|
@else if (type-of(nth($query, 1)) == 'string' and type-of(nth($query, 2)) == 'string') { |
|
@if not breakpoint-single-string(nth($query, 1)) and not breakpoint-single-string(nth($query, 2)) { |
|
$feature-holder: append(nth($query, 1), nth($query, 2), space); |
|
$query-holder: append($query-holder, $feature-holder, comma); |
|
@return $query-holder; |
|
} |
|
} |
|
} |
|
@else if $length == 3 { |
|
// If we've got three items and none is a list, we check to see |
|
@if type-of(nth($query, 1)) != 'list' and type-of(nth($query, 2)) != 'list' and type-of(nth($query, 3)) != 'list' { |
|
// If none of the items are single string values and none of the values are media values, we're good. |
|
@if (not breakpoint-single-string(nth($query, 1)) and not breakpoint-single-string(nth($query, 2)) and not breakpoint-single-string(nth($query, 3))) and ((not breakpoint-is-media(nth($query, 1)) and not breakpoint-is-media(nth($query, 2)) and not breakpoint-is-media(nth($query, 3)))) { |
|
$feature-holder: append(nth($query, 1), nth($query, 2), space); |
|
$feature-holder: append($feature-holder, nth($query, 3), space); |
|
$query-holder: append($query-holder, $feature-holder, comma); |
|
@return $query-holder; |
|
} |
|
// let's check to see if the first item is a media type |
|
@else if breakpoint-is-media(nth($query, 1)) { |
|
$query-holder: append($query-holder, nth($query, 1)); |
|
$feature-holder: append(nth($query, 2), nth($query, 3), space); |
|
$query-holder: append($query-holder, $feature-holder); |
|
@return $query-holder; |
|
} |
|
} |
|
} |
|
|
|
// If it's a single item, or if it's not a special case double or triple, we can simply return the query. |
|
@return $query; |
|
}
|
|
|