Module: Erubis::HeaderFooterEnhancer
- Included in:
- HeaderFooterEruby
- Defined in:
- lib/erubis/enhancer.rb
Overview
- 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.
Constant Summary collapse
- HEADER_FOOTER_PATTERN =
/(.*?)(^[ \t]*)?<!--\#(\w+):(.*?)\#-->([ \t]*\r?\n)?/m
Instance Attribute Summary collapse
-
#footer ⇒ Object
Returns the value of attribute footer.
-
#header ⇒ Object
Returns the value of attribute header.
Class Method Summary collapse
-
.desc ⇒ Object
:nodoc:.
Instance Method Summary collapse
Instance Attribute Details
#footer ⇒ Object
Returns the value of attribute footer.
601 602 603 |
# File 'lib/erubis/enhancer.rb', line 601 def @footer end |
#header ⇒ Object
Returns the value of attribute header.
601 602 603 |
# File 'lib/erubis/enhancer.rb', line 601 def header @header end |
Class Method Details
.desc ⇒ Object
:nodoc:
579 580 581 |
# File 'lib/erubis/enhancer.rb', line 579 def self.desc # :nodoc: "allow header/footer in document (ex. '<!--#header: #-->')" end |
Instance Method Details
#add_text(src, text) ⇒ Object
585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 |
# File 'lib/erubis/enhancer.rb', line 585 def add_text(src, text) m = nil text.scan(HEADER_FOOTER_PATTERN) do |txt, lspace, word, content, rspace| m = Regexp.last_match flag_trim = @trim && lspace && rspace super(src, txt) content = "#{lspace}#{content}#{rspace}" if flag_trim super(src, lspace) if !flag_trim && lspace instance_variable_set("@#{word}", content) super(src, rspace) if !flag_trim && rspace end #rest = $' || text # ruby1.8 rest = m ? text[m.end(0)..-1] : text # ruby1.9 super(src, rest) end |
#convert(input) ⇒ Object
603 604 605 606 |
# File 'lib/erubis/enhancer.rb', line 603 def convert(input) source = super return @src = "#{@header}#{source}#{@footer}" end |