Module Erubis::HeaderFooterEnhancer
In: lib/erubis/enhancer.rb
Eruby\n[lib/erubis/engine/eruby.rb\nlib/erubis/helpers/rails_helper.rb] PreprocessingEruby XmlEruby HeaderFooterEruby PrintEnabledEruby StdoutEruby FastEruby\n[lib/erubis/engine/eruby.rb\nlib/erubis/helpers/rails_helper.rb] StringBufferEruby BiPatternEruby InterpolationEruby PercentLineEruby PrintOutSimplifiedEruby NoTextEruby ErboutEruby StringIOEruby ArrayEruby PrintOutEruby SimplifiedEruby EscapedEruby DeleteIndentEruby StdoutSimplifiedEruby NoCodeEruby ArrayBufferEruby PreprocessingEruby OptimizedEruby Engine Ejava Ephp Eperl Ec Ejavascript Escheme EscapedEjava EscapedEphp EscapedEc OptimizedXmlEruby EscapedEperl EscapedEjavascript EscapedEscheme ErubisError NotSupportedError CommandOptionError Enumerable Context StandardError RubyEvaluator Eruby RubyGenerator PI::Engine Ejava Eperl Ec Ejavascript Escheme Ephp JavaGenerator Evaluator Engine PI::Converter Generator PerlGenerator CGenerator JavascriptGenerator SchemeGenerator PhpGenerator Basic::Converter Main Engine TinyEruby TinyEruby lib/erubis/engine/escheme.rb lib/erubis/engine/ec.rb lib/erubis/engine/eperl.rb lib/erubis/engine/eruby.rb lib/erubis/engine/ephp.rb lib/erubis/helpers/rails_helper.rb lib/erubis/preprocessing.rb lib/erubis/error.rb lib/erubis/engine/ejava.rb lib/erubis/engine/ejavascript.rb lib/erubis/context.rb lib/erubis/engine/optimized.rb lib/erubis/main.rb lib/erubis/engine/enhanced.rb lib/erubis/engine.rb lib/erubis/tiny.rb NoCodeEnhancer ArrayBufferEnhancer Generator StringBufferEnhancer OptimizedGenerator SchemeGenerator lib/erubis/engine/escheme.rb lib/erubis/engine/ec.rb lib/erubis/engine/eperl.rb lib/erubis/engine/eruby.rb lib/erubis/engine/ephp.rb lib/erubis/engine/ejava.rb lib/erubis/engine/ejavascript.rb lib/erubis/engine.rb lib/erubis/tiny.rb Converter PI SimplifyEnhancer StdoutEnhancer Converter lib/erubis/helpers/rails_helper.rb TemplateConverter RailsHelper RailsFormHelper Helpers XmlHelper HeaderFooterEnhancer RubyGenerator PhpGenerator CGenerator lib/erubis/engine.rb Converter Basic PreprocessingHelper Evaluator BiPatternEnhancer PrintEnabledEnhancer PerlGenerator JavascriptGenerator PercentLineEnhancer NoTextEnhancer ErboutEnhancer PrintOutEnhancer EscapeEnhancer JavaGenerator DeleteIndentEnhancer StringIOEnhancer ArrayEnhancer RubyEvaluator InterpolationEnhancer Erubis dot/m_23_0.png
experimental
allow header and footer in eRuby script

ex.

  ====================
  ## without header and footer
  $ cat ex1.eruby
  <% def list_items(list) %>
  <%   for item in list %>
  <li><%= item %></li>
  <%   end %>
  <% end %>

  $ erubis -s ex1.eruby
  _buf = []; def list_items(list)
  ;   for item in list
  ; _buf << '<li>'; _buf << ( item ).to_s; _buf << '</li>
  ';   end
  ; end
  ;
  _buf.join

  ## with header and footer
  $ cat ex2.eruby
  <!--#header:
  def list_items(list)
   #-->
  <%  for item in list %>
  <li><%= item %></li>
  <%  end %>
  <!--#footer:
  end
   #-->

  $ erubis -s -c HeaderFooterEruby ex4.eruby

  def list_items(list)
   _buf = []; _buf << '
  ';  for item in list
  ; _buf << '<li>'; _buf << ( item ).to_s; _buf << '</li>
  ';  end
  ; _buf << '
  ';
  _buf.join
  end

  ====================

this is language-independent.

Methods

add_text   convert  

Constants

HEADER_FOOTER_PATTERN = /(.*?)(^[ \t]*)?<!--\#(\w+):(.*?)\#-->([ \t]*\r?\n)?/m

Attributes

footer  [RW] 
header  [RW] 

Public Instance methods

[Source]

     # File lib/erubis/enhancer.rb, line 542
542:     def add_text(src, text)
543:       m = nil
544:       text.scan(HEADER_FOOTER_PATTERN) do |txt, lspace, word, content, rspace|
545:         m = Regexp.last_match
546:         flag_trim = @trim && lspace && rspace
547:         super(src, txt)
548:         content = "#{lspace}#{content}#{rspace}" if flag_trim
549:         super(src, lspace) if !flag_trim && lspace
550:         instance_variable_set("@#{word}", content)
551:         super(src, rspace) if !flag_trim && rspace
552:       end
553:       #rest = $' || text                    # ruby1.8
554:       rest = m ? text[m.end(0)..-1] : text  # ruby1.9
555:       super(src, rest)
556:     end

[Source]

     # File lib/erubis/enhancer.rb, line 560
560:     def convert(input)
561:       source = super
562:       return @src = "#{@header}#{source}#{@footer}"
563:     end

[Validate]