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.
558 559 560 |
# File 'lib/erubis/enhancer.rb', line 558 def @footer end |
#header ⇒ Object
Returns the value of attribute header.
558 559 560 |
# File 'lib/erubis/enhancer.rb', line 558 def header @header end |
Class Method Details
.desc ⇒ Object
:nodoc:
536 537 538 |
# File 'lib/erubis/enhancer.rb', line 536 def self.desc # :nodoc: "allow header/footer in document (ex. '<!--#header: #-->')" end |
Instance Method Details
#add_text(src, text) ⇒ Object
542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 |
# File 'lib/erubis/enhancer.rb', line 542 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
560 561 562 563 |
# File 'lib/erubis/enhancer.rb', line 560 def convert(input) source = super return @src = "#{@header}#{source}#{@footer}" end |