12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- ###
- ### $Release: 2.7.0 $
- ### copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
- ###
- 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
|