Какой селектор соответствует набору правил стилуса?

Можно ли как-то захватить имя класса, которое соответствует набору правил стилуса?

То, что я пытаюсь сделать, это высушить это правило (и многим оно нравится):

.button
  &:hover
    button-hover-color-scheme(teal)
    &.adwords
      button-hover-color-scheme(adwords)
    &.bingads
      button-hover-color-scheme(bingads)
    &.facebook
      button-hover-color-scheme(facebook)
    &.linkedin
      button-hover-color-scheme(linkedin)
    &.twitter
      button-hover-color-scheme(twitter)

Я хотел бы, чтобы это выглядело примерно так:

.button
  &:hover
    button-hover-color-scheme(teal)
    &.adwords
    &.bingads
    &.facebook
    &.linkedin
    &.twitter
      button-hover-color-scheme(matched-selector)

где matched-selector будет любой из adwords, bingads, facebook, linkedin, or twitter, который действительно соответствует правилу.

Спасибо!

Редактировать:

Существует функция selector(), но она дает мне все selector не просто последняя часть, которая соответствует. Это почти то, что мне нужно, но я чувствую, что должен быть более простой способ сослаться на согласованный селектор.


person spinlock    schedule 15.04.2015    source источник


Ответы (2)


Вы не можете получить соответствующий селектор, потому что этот селектор будет определен только во время выполнения браузера. В этот момент кода Stylus не будет, потому что браузер будет использовать CSS, скомпилированный Stylus.

person Panya    schedule 16.04.2015
comment
Спасибо. Это имеет большой смысл и помогает мне правильно думать об этом. Может быть, я могу попробовать интерполяцию, чтобы получить то, что я хочу. - person spinlock; 16.04.2015
comment
Да, единственный способ избежать этого дублирования — это интерполяция + циклы. - person Panya; 16.04.2015

Благодаря ответу Пани я начал пытаться использовать интерполяцию для решения этой проблемы и придумал:

.button
  &:hover
    for network in 'google' 'bing' 'facebook' 'linkedin' 'twitter'
      &.{network}
        button-hover-color-scheme(lookup(network))

Хитрость заключалась в том, чтобы перебрать список строк, использовать скобки для селектора и поиска, чтобы преобразовать строку обратно в переменную.

person spinlock    schedule 17.04.2015