Class: CoffeeViews::Rails::TemplateHandler
- Inherits:
-
Object
- Object
- CoffeeViews::Rails::TemplateHandler
- Defined in:
- lib/coffee_views/rails.rb
Class Method Summary collapse
- .call(template) ⇒ Object
- .compile_coffee(source) ⇒ Object
- .erb_handler ⇒ Object
- .preprocess(source) ⇒ Object
Class Method Details
.call(template) ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/coffee_views/rails.rb', line 29 def self.call(template) source = compile_coffee(template.source) # TODO: find how to set source back to template without instance_variable_set template.instance_variable_set :@source, source erb_handler.call(template) end |
.compile_coffee(source) ⇒ Object
24 25 26 27 |
# File 'lib/coffee_views/rails.rb', line 24 def self.compile_coffee(source) source = preprocess(source) ::CoffeeScript.compile(source) end |
.erb_handler ⇒ Object
9 10 11 |
# File 'lib/coffee_views/rails.rb', line 9 def self.erb_handler @@erb_handler ||= ActionView::Template.registered_template_handler(:erb) end |
.preprocess(source) ⇒ Object
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/coffee_views/rails.rb', line 13 def self.preprocess source return "".html_safe unless source source.gsub! /<%==(.*?)%>/, '`<%==\1%>`' source.gsub! /<%=([^=].*?)%>/, '`<%==CoffeeViews.j((\1).to_json.html_safe)%>`' source.gsub! /<%([^=].*?)%>/, '`<%\1%>`' source.gsub! /#\{==(.*?)\}/, '#{`<%==\1%>`}' source.gsub! /#\{=([^=].*?)\}/, '#{`<%==CoffeeViews.j((\1).to_json.html_safe)%>`}' source end |