Для тех, кто ищет обходной путь, вы можете использовать селектор атрибутов, например, если ваш класс начинается с числа. Изменить:
.000000-8{background:url(../../images/common/000000-0.8.png);} /* DOESN'T WORK!! */
на это:
[class="000000-8"]{background:url(../../images/common/000000-0.8.png);} /* WORKS :) */
Кроме того, если есть несколько классов, вам нужно будет указать их в селекторе, я думаю.
Источники:
Если бы Вы не стыдитесь monkeypatching и синтаксиса злоупотребления, это работало бы:
class String
def | x
if empty? then x else self end
end
end
Тогда можно сказать word.infinitive | word
, который на самом деле сканирует справедливо естественно, если Вы спрашиваете меня.
Однако я думаю, что лучшая идея состояла бы в том, чтобы изменить инфинитивный метод или добавить версию его, которая возвращает неизменное слово.
Редактирование: Вот возможно более изящное решение:
[word.infinitive, word].find {|x| not x.empty?}
Сделайте правильная вещь - фиксирует инфинитив так, чтобы это возвратило ноли вместо пустых строк, или оберните его со своим собственным интерфейсом, если Вы действительно не можете коснуться его.
Вы могли использовать тернарный оператор (boolean ? true-val : false-val)
с String#empty?
return word.infinitive.empty? ? word : word.infinitive
, если Вы только хотите назвать инфинитив однажды:
return (inf = word.infinitive).empty? ? word : inf
можно также хотеть считать добавление приблизительно memoization к коду.
Или вы можете сделать monkeypatch новой функции для String без необходимости злоупотреблять синтаксисом.
class String
def squash
self.empty? ? nil : self
end
end
Теперь вы можете сделать
puts var.squash or "default text"
Я не являюсь носителем английского языка, поэтому я не знаю, является ли squash лучшим словом. Есть ли слово, которое лучше передаст идею "превращать в nil только если пусто"?
Вы можете использовать регулярное выражение, например , в этой статье предлагается
(word.infinitive[/.+/m] or word) #Fancy way to convert "" to nil