jeanny 0.98 → 0.99
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/jeanny/engine.rb +21 -82
- data/lib/jeanny/extend.rb +1 -1
- metadata +1 -1
data/lib/jeanny/engine.rb
CHANGED
@@ -330,17 +330,11 @@ module Jeanny
|
|
330
330
|
|
331
331
|
def replace classes
|
332
332
|
|
333
|
-
#
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
"_ololo_#{expression_list.length}_ololo_"
|
339
|
-
end
|
340
|
-
|
341
|
-
# Вставляем экспрешены с замененными классами обратно
|
342
|
-
expression_list.each_with_index do |expression, index|
|
343
|
-
@code.gsub! /_ololo_#{index + 1}_ololo_/, expression
|
333
|
+
# Заменяем в экспрешенах
|
334
|
+
@code.each_expression do |expression|
|
335
|
+
@code.gsub! expression do |a|
|
336
|
+
JSCode.new(expression).replace(classes)
|
337
|
+
end
|
344
338
|
end
|
345
339
|
|
346
340
|
@code.gsub!(/\[class\^=(.*?)\]/) do |class_name|
|
@@ -433,91 +427,36 @@ module Jeanny
|
|
433
427
|
class TT2Template < HTMLCode
|
434
428
|
|
435
429
|
def replace classes
|
436
|
-
|
437
|
-
tags =
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
"
|
430
|
+
|
431
|
+
tags = Array.new
|
432
|
+
mark = self.object_id
|
433
|
+
|
434
|
+
@code.gsub! /\[%(.*?)%\]/m do |tag|
|
435
|
+
tags.push tag and "#{mark}:#{tags.length - 1}:"
|
442
436
|
end
|
443
437
|
|
444
438
|
super classes
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
classes.each do |full_class, short_class|
|
454
|
-
while (pos = string_after =~ /#{full_class}(?=[^a-z0-9\-_\.]|$)/)
|
455
|
-
string_after[pos, full_class.length] = short_class
|
456
|
-
end
|
457
|
-
end
|
458
|
-
tag = tag.sub string, string_after
|
439
|
+
|
440
|
+
classes.each do |full_class, short_class|
|
441
|
+
tags.map! do |tag|
|
442
|
+
tag.gsub /((BLOCK|PROCESS|INCLUDE|INSERT)\s+('|").*?[^\\]\3)|(('|").*?[^\\]\5)/ do |string|
|
443
|
+
unless $5.nil?
|
444
|
+
string.gsub /#{full_class}(?=[\s"']|$|\\["'])/, short_class
|
445
|
+
else
|
446
|
+
string
|
459
447
|
end
|
460
|
-
tag
|
461
448
|
end
|
462
449
|
end
|
463
|
-
tag
|
464
450
|
end
|
465
451
|
|
466
|
-
tags.
|
467
|
-
@code.gsub!
|
452
|
+
tags.select.with_index do |tag, index|
|
453
|
+
@code.gsub! "#{mark}:#{index}:", tag
|
468
454
|
end
|
469
455
|
|
470
456
|
@code
|
471
457
|
|
472
458
|
end
|
473
459
|
|
474
|
-
private
|
475
|
-
|
476
|
-
def each_string args = { }
|
477
|
-
|
478
|
-
char = ''
|
479
|
-
last_char = ''
|
480
|
-
start_char = ''
|
481
|
-
|
482
|
-
value = ''
|
483
|
-
status = :in_code
|
484
|
-
scanner = StringScanner.new args[:in].dup || ''
|
485
|
-
|
486
|
-
until scanner.eos?
|
487
|
-
|
488
|
-
scanner.getch or next
|
489
|
-
char = scanner.matched
|
490
|
-
|
491
|
-
case status
|
492
|
-
|
493
|
-
when :in_code
|
494
|
-
# Если мы в коде, а текущий символ один из тех что нам надо
|
495
|
-
# значит запоминаем, этот символ и переходим в режим "в строке"
|
496
|
-
if %w(" ').include? char
|
497
|
-
start_char = char
|
498
|
-
status = :in_string
|
499
|
-
end
|
500
|
-
|
501
|
-
when :in_string
|
502
|
-
# Если мы в строке, текущий символ такой же как и начальный,
|
503
|
-
# а предыдущий не экранирует его, значит строка законченна.
|
504
|
-
# Переходим в режим "в коде"
|
505
|
-
if char.eql? start_char and not last_char.eql? '\\'
|
506
|
-
yield value if block_given?
|
507
|
-
status, start_char, value = :in_code, '', ''
|
508
|
-
# Иначе, прибавляем текущий символ к уже полученной строке
|
509
|
-
else
|
510
|
-
value = value + char
|
511
|
-
end
|
512
|
-
|
513
|
-
end
|
514
|
-
|
515
|
-
last_char = char unless char.nil? or char =~ /\s/
|
516
|
-
|
517
|
-
end
|
518
|
-
|
519
|
-
end
|
520
|
-
|
521
460
|
end
|
522
461
|
|
523
462
|
class PlainCode < Code
|
data/lib/jeanny/extend.rb
CHANGED