diff options
author | makoto kuwata <kwa@kuwata-lab.com> | 2007-05-26 13:47:24 +0000 |
---|---|---|
committer | makoto kuwata <kwa@kuwata-lab.com> | 2007-05-26 13:47:24 +0000 |
commit | 5e76a039a0f8a7072eaf2322787f311e625726db (patch) | |
tree | 3dcc8fe3d70e647d3950306c6925c3d065db4bee | |
parent | b1c2e48051d1ec24fcc1cffb6a201aed5f1fab93 (diff) | |
download | erubis-5e76a039a0f8a7072eaf2322787f311e625726db.tar.gz |
- [enhance] preprocessor support in rails_helper.rb
-rw-r--r-- | ChangeLog.txt | 6 | ||||
-rw-r--r-- | ReleaseNote.txt | 4 | ||||
-rw-r--r-- | lib/erubis/helpers/rails_helper.rb | 39 |
3 files changed, 49 insertions, 0 deletions
diff --git a/ChangeLog.txt b/ChangeLog.txt index 2c72729..a2dc192 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -2,6 +2,12 @@ .?lastupdate: $Date$ .?version: $Rev$ +: Rev.85 (2007-05-26) + .- [enhance] preprocessor support in rails_helper.rb + +: Rev.84 (2007-05-26) + .- [release] 2.3.1 + : Rev.83 (2007-05-26) .- [release] release preparation diff --git a/ReleaseNote.txt b/ReleaseNote.txt index 90ee181..c086f88 100644 --- a/ReleaseNote.txt +++ b/ReleaseNote.txt @@ -10,6 +10,10 @@ Bugfix: You must be update if you are using Erubis with Ruby on Rails. +-- +regards, +kwatch + diff --git a/lib/erubis/helpers/rails_helper.rb b/lib/erubis/helpers/rails_helper.rb index dacd899..526dddf 100644 --- a/lib/erubis/helpers/rails_helper.rb +++ b/lib/erubis/helpers/rails_helper.rb @@ -78,6 +78,26 @@ module Erubis @@show_src = flag end + ##--- preprocessor --- + @@preprocessing = false + def self.preprocessing + @@preprocessing + end + def self.preprocessing=(flag) + @@preprocessing = flag + end + class PreprocessingEruby < Erubis::Eruby + def initialize(input, params={}) + params[:pattern] = '\[% %\]' # use '[%= %]' instead of '<%= %>' + params[:escape] = true # transport '[%= %]' and '[%== %]' + super + end + def add_expr_escaped(src, code) + add_expr_literal(src, "_decode((#{code}))") + end + end + ##-------------------- + end end @@ -187,11 +207,30 @@ class ActionView::Base # :nodoc: klass = Erubis::Helpers::RailsHelper.engine_class properties = Erubis::Helpers::RailsHelper.init_properties show_src = Erubis::Helpers::RailsHelper.show_src + ## --- preprocessing --- + if Erubis::Helpers::RailsHelper.preprocessing + preprocessor = Erubis::Helpers::RailsHelper::PreprocessingEruby.new(template) + template = self.instance_eval(preprocessor.src) + logger.debug "** Erubis: preprocessed==<<'END'\n#{template}END\n" if show_src + end + ## --------------------- src = klass.new(template, properties).src #src.insert(0, '_erbout = ') logger.debug "** Erubis: src==<<'END'\n#{src}END\n" if show_src src end + + ## --- preprocessing --- + def _expr(arg) + return "<%=#{arg}%>" + end + alias _x _expr + alias _? _expr + def _decode(arg) + return arg.to_s.gsub(/<%=(.*?)%>/, '<%=\1%>').gsub(/%3C%25%3D(.*?)%25%3E/, '<%=\1%>') + end + ## --------------------- + end |