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
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 377 378 379 380 381 382 383 |
# File 'lib/jeanny/engine.rb', line 339 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 |