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.
550 551 552 |
# File 'lib/erubis/enhancer.rb', line 550 def @footer end |
#header ⇒ Object
Returns the value of attribute header.
550 551 552 |
# File 'lib/erubis/enhancer.rb', line 550 def header @header end |
Class Method Details
.desc ⇒ Object
:nodoc:
531 532 533 |
# File 'lib/erubis/enhancer.rb', line 531 def self.desc # :nodoc: "allow header/footer in document (ex. '<!--#header: #-->')" end |
Instance Method Details
#add_text(src, text) ⇒ Object
537 538 539 540 541 542 543 544 545 546 547 548 |
# File 'lib/erubis/enhancer.rb', line 537 def add_text(src, text) text.scan(HEADER_FOOTER_PATTERN) do |txt, lspace, word, content, rspace| 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 super(src, rest) end |
#convert(input) ⇒ Object
552 553 554 555 |
# File 'lib/erubis/enhancer.rb', line 552 def convert(input) source = super return @src = "#{@header}#{source}#{@footer}" end |