Module: Slideshow::TextFilter
Constant Summary collapse
- DIRECTIVES_UNPARSED =
[ 'slide', 'style' ]
- DIRECTIVES_RENAMES =
[ 'include', 'class' ]
- DIRECTIVES_EXPRS =
[ 'class', 'clear' ]
Instance Method Summary collapse
- #directives_bang_style_to_percent_style(content) ⇒ Object
- #directives_percent_style(content) ⇒ Object
- #erb_rename_helper_hack(content) ⇒ Object
Instance Method Details
permalink #directives_bang_style_to_percent_style(content) ⇒ Object
[View source]
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/slideshow/filters/text_filter.rb', line 19 def directives_bang_style_to_percent_style( content ) # for compatibility allow !SLIDE/!STYLE as an alternative to %slide/%style-directive bang_count = 0 # get unparsed helpers e.g. SLIDE|STYLE unparsed = DIRECTIVES_UNPARSED.map { |item| item.upcase }.join( '|' ) content.gsub!(/^!(#{unparsed})(.*)$/) do |match| bang_count += 1 "<%= #{$1.downcase} '#{$2 ? $2 : ''}' %>" end puts " Patching !-directives (#{bang_count} #{DIRECTIVES_UNPARSED.join('/')}-directives)..." content end |
permalink #directives_percent_style(content) ⇒ Object
[View source]
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/slideshow/filters/text_filter.rb', line 39 def directives_percent_style( content ) directive_unparsed = 0 directive_expr = 0 directive_block_beg = 0 directive_block_end = 0 # process directives (plus skip %begin/%end comment-blocks) inside_block = 0 inside_helper = false content2 = "" content.each_line do |line| if line =~ /^%([a-zA-Z][a-zA-Z0-9_]*)(.*)/ directive = $1.downcase params = $2 logger.debug "processing %-directive: #{directive}" if DIRECTIVES_UNPARSED.include?( directive ) # e.g. slide, style, etc. directive_unparsed += 1 content2 << "<%= #{directive} '#{params ? params : ''}' %>" elsif DIRECTIVES_EXPRS.include?( directive ) # e.g. class, clear, etc. directive_expr += 1 content2 << "<%= #{directive} #{params ? erb_simple_params(directive,params) : ''} %>" elsif inside_helper && directive == 'end' inside_helper = false directive_block_end += 1 content2 << "%>" elsif inside_block > 0 && directive == 'end' inside_block -= 1 directive_block_end += 1 content2 << "<% end %>" elsif [ 'comment', 'comments', 'begin', 'end' ].include?( directive ) # skip begin/end comment blocks content2 << line elsif [ 'helper', 'helpers' ].include?( directive ) inside_helper = true directive_block_beg += 1 content2 << "<%" else inside_block += 1 directive_block_beg += 1 content2 << "<% #{directive} #{params ? erb_simple_params(directive,params) : ''} do %>" end else content2 << line end end puts " Preparing %-directives (" + "#{directive_unparsed} #{DIRECTIVES_UNPARSED.join('/')} directives, " + "#{directive_expr} #{DIRECTIVES_EXPRS.join('/')} expr-directives, " + "#{directive_block_beg}/#{directive_block_end} block-directives)..." content2 end |
permalink #erb_rename_helper_hack(content) ⇒ Object
[View source]
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/slideshow/filters/text_filter.rb', line 103 def erb_rename_helper_hack( content ) # note: include is a ruby keyword; rename to s9_include so we can use it rename_counter = 0 # turn renames into something like: # include|class etc. renames = DIRECTIVES_RENAMES.join( '|' ) content.gsub!( /<%=[ \t]*(#{renames})/ ) do |match| rename_counter += 1 "<%= s9_#{$1}" end puts " Patching embedded Ruby (erb) code for aliases (#{rename_counter} #{DIRECTIVES_RENAMES.join('/')}-aliases)..." content end |