Class: Jeanny::CSSCode
Instance Attribute Summary
Attributes inherited from Code
Instance Method Summary collapse
Methods inherited from Code
Constructor Details
This class inherits a constructor from Jeanny::Code
Instance Method Details
#replace(classes) ⇒ Object
332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 |
# File 'lib/jeanny/engine.rb', line 332 def replace classes skips = Array.new @code.gsub! /(\s*\/\*!?\s*jeanny-ignore\s*\*\/\s*)\s*(.*?)\s*\1/ do |match| skips.push $2 "_skip_#{skips.length}_" end # Заменяем в экспрешенах @code.each_expression do |expression| @code.gsub! expression do |a| JSCode.new(expression).replace(classes) end end @code.gsub!(/\[class\^=(.*?)\]/) do |class_name| if classes.include? $1 class_name.gsub $1, classes[$1] else class_name end end # Случайная строка unique_string = Time.now.object_id.to_s # Проходимся по классам classes.each do |full_name, short_name| # Заменяем старое имя класса на новое, плюс случайное число, # чтобы знать что этот класс мы уже изменяли # TODO: Может это нахрен не надо? @code = @code.gsub(/\.#{full_name}(?=[^-\w])/, ".#{unique_string}#{short_name}") end skips.each_with_index do |code, index| @code.gsub! /_skip_#{index + 1}_/, code end # После замены имен классов, случайное число уже не нужно, # так что удаляем его, и возвращаем css с замененными значениями @code.gsub(unique_string, '') end |