diff options
author | makoto kuwata <kwa@kuwata-lab.com> | 2008-04-29 12:40:14 +0000 |
---|---|---|
committer | makoto kuwata <kwa@kuwata-lab.com> | 2008-04-29 12:40:14 +0000 |
commit | fa5be13289315103cacaef99390b0ef27f3d9e9c (patch) | |
tree | a720313e12a37b36843d16385361f9a6349090dc /lib | |
parent | 053af9263464a0556378fd052f8f7bb73168ce43 (diff) | |
download | erubis-fa5be13289315103cacaef99390b0ef27f3d9e9c.tar.gz |
- [add] preprocessing.rb
- [change] rails_helper.rb: move Preprocessing class and helper methods into preprocessing.rb
Diffstat (limited to 'lib')
-rw-r--r-- | lib/erubis/helpers/rails_helper.rb | 36 | ||||
-rw-r--r-- | lib/erubis/preprocessing.rb | 59 |
2 files changed, 63 insertions, 32 deletions
diff --git a/lib/erubis/helpers/rails_helper.rb b/lib/erubis/helpers/rails_helper.rb index 63dc1b7..9deb4bf 100644 --- a/lib/erubis/helpers/rails_helper.rb +++ b/lib/erubis/helpers/rails_helper.rb @@ -6,7 +6,7 @@ require 'erubis' -require 'cgi' +require 'erubis/preprocessing' module Erubis @@ -76,7 +76,7 @@ module Erubis @@show_src = flag end - ##----- preprocessing -------------------- + #cattr_accessor :preprocessing @@preprocessing = false def self.preprocessing @@preprocessing @@ -84,18 +84,6 @@ module Erubis def self.preprocessing=(flag) @@preprocessing = flag end - class PreprocessingEruby < Erubis::Eruby - def initialize(input, params={}) - params = params.dup - 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 @@ -235,6 +223,7 @@ end ## set Erubis as eRuby compiler in Ruby on Rails instead of ERB class ActionView::Base # :nodoc: + include Erubis::PreprocessingHelper private def convert_template_into_ruby_code(template) #src = Erubis::Eruby.new(template).src @@ -244,7 +233,7 @@ class ActionView::Base # :nodoc: show_src = ENV['RAILS_ENV'] == 'development' if show_src.nil? ##----- preprocessing ------------------- if Erubis::Helpers::RailsHelper.preprocessing - preprocessor = Erubis::Helpers::RailsHelper::PreprocessingEruby.new(template) + preprocessor = Erubis::Helpers::RailsHelper::PreprocessingEruby.new(template, :escape=>true) #template = self.instance_eval(preprocessor.src) template = preprocessor.evaluate(self) logger.debug "** Erubis: preprocessed==<<'END'\n#{template}END\n" if show_src @@ -255,23 +244,6 @@ class ActionView::Base # :nodoc: logger.debug "** Erubis: src==<<'END'\n#{src}END\n" if show_src src end - - ##----- preprocessing ------------------- - def _p(arg) - return "<%=#{arg}%>" - end - def _P(arg) - return "<%=h(#{arg})%>" - end - alias _? _p - def _decode(arg) - arg = arg.to_s - arg.gsub!(/%3C%25(?:=|%3D)(.*?)%25%3E/) { "<%=#{CGI.unescape($1)}%>" } - arg.gsub!(/<%=(.*?)%>/) { "<%=#{CGI.unescapeHTML($1)}%>" } - return arg - end - ##---------------------------------------- - end diff --git a/lib/erubis/preprocessing.rb b/lib/erubis/preprocessing.rb new file mode 100644 index 0000000..3da1d7c --- /dev/null +++ b/lib/erubis/preprocessing.rb @@ -0,0 +1,59 @@ +### +### $Rev$ +### $Release:$ +### $Copyright$ +### + +require 'cgi' + + +module Erubis + + + ## + ## for preprocessing + ## + class PreprocessingEruby < Erubis::Eruby + + def initialize(input, params={}) + params = params.dup + 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 + + + ## + ## helper methods for preprocessing + ## + module PreprocessingHelper + + module_function + + def _p(arg) + return "<%=#{arg}%>" + end + + def _P(arg) + return "<%=h(#{arg})%>" + end + + alias _? _p + + def _decode(arg) + arg = arg.to_s + arg.gsub!(/%3C%25(?:=|%3D)(.*?)%25%3E/) { "<%=#{CGI.unescape($1)}%>" } + arg.gsub!(/<%=(.*?)%>/) { "<%=#{CGI.unescapeHTML($1)}%>" } + return arg + end + + end + + +end |