Function that scopes a selector with another one. This works a bit like SCSS nesting except the & operator isn’t supported.
Description
$scope = '.a, .b .c';
$selector = '> .x, .y';
$merged = scope_selector( $scope, $selector );
// $merged is '.a > .x, .a .y, .b .c > .x, .b .c .y'Parameters
$scopestringrequired- Selector to scope to.
$selectorstringrequired- Original selector.
Source
public static function scope_selector( $scope, $selector ) {
if ( ! $scope || ! $selector ) {
return $selector;
}
$scopes = explode( ',', $scope );
$selectors = explode( ',', $selector );
$selectors_scoped = array();
foreach ( $scopes as $outer ) {
foreach ( $selectors as $inner ) {
$outer = trim( $outer );
$inner = trim( $inner );
if ( ! empty( $outer ) && ! empty( $inner ) ) {
$selectors_scoped[] = $outer . ' ' . $inner;
} elseif ( empty( $outer ) ) {
$selectors_scoped[] = $inner;
} elseif ( empty( $inner ) ) {
$selectors_scoped[] = $outer;
}
}
}
$result = implode( ', ', $selectors_scoped );
return $result;
}
User Contributed Notes
You must log in before being able to contribute a note or feedback.