Module Erubis::HeaderFooterEnhancer
In: lib/erubis/enhancer.rb
Ejava EscapedEjava Engine Eperl Ephp OptimizedEruby Ec Ejavascript Escheme Eruby\n[lib/erubis/engine/eruby.rb\nlib/erubis/helpers/rails_helper.rb] PreprocessingEruby XmlEruby HeaderFooterEruby PrintEnabledEruby StdoutEruby StringBufferEruby BiPatternEruby InterpolationEruby PercentLineEruby PrintOutSimplifiedEruby NoTextEruby ErboutEruby StringIOEruby ArrayEruby PrintOutEruby SimplifiedEruby EscapedEruby DeleteIndentEruby StdoutSimplifiedEruby NoCodeEruby ArrayBufferEruby PreprocessingEruby FastEruby\n[lib/erubis/engine/eruby.rb\nlib/erubis/helpers/rails_helper.rb] EscapedEphp EscapedEc OptimizedXmlEruby EscapedEperl EscapedEjavascript EscapedEscheme Enumerable Context ErubisError NotSupportedError CommandOptionError StandardError RubyEvaluator Eruby RubyGenerator PI::Engine Ejava Eperl Ec Ejavascript Ephp Escheme JavaGenerator PerlGenerator Evaluator Engine PI::Converter Generator CGenerator JavascriptGenerator PhpGenerator SchemeGenerator Basic::Converter Main TinyEruby Engine 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/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/tiny.rb lib/erubis/engine.rb NoCodeEnhancer ArrayBufferEnhancer StringBufferEnhancer Generator SchemeGenerator OptimizedGenerator 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/tiny.rb lib/erubis/engine.rb Converter PI Converter SimplifyEnhancer StdoutEnhancer HeaderFooterEnhancer RubyGenerator CGenerator PhpGenerator lib/erubis/engine.rb Converter Basic XmlHelper lib/erubis/helpers/rails_helper.rb TemplateConverter RailsHelper RailsFormHelper Helpers BiPatternEnhancer PrintEnabledEnhancer PerlGenerator JavascriptGenerator PreprocessingHelper Evaluator PercentLineEnhancer NoTextEnhancer ErboutEnhancer PrintOutEnhancer EscapeEnhancer JavaGenerator DeleteIndentEnhancer StringIOEnhancer ArrayEnhancer InterpolationEnhancer RubyEvaluator 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]