summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormakoto kuwata <kwa@kuwata-lab.com>2007-05-26 13:47:24 +0000
committermakoto kuwata <kwa@kuwata-lab.com>2007-05-26 13:47:24 +0000
commit5e76a039a0f8a7072eaf2322787f311e625726db (patch)
tree3dcc8fe3d70e647d3950306c6925c3d065db4bee
parentb1c2e48051d1ec24fcc1cffb6a201aed5f1fab93 (diff)
downloaderubis-5e76a039a0f8a7072eaf2322787f311e625726db.tar.gz
- [enhance] preprocessor support in rails_helper.rb
-rw-r--r--ChangeLog.txt6
-rw-r--r--ReleaseNote.txt4
-rw-r--r--lib/erubis/helpers/rails_helper.rb39
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(/&lt;%=(.*?)%&gt;/, '<%=\1%>').gsub(/%3C%25%3D(.*?)%25%3E/, '<%=\1%>')
+ end
+ ## ---------------------
+
end