diff options
author | makoto kuwata <kwa@kuwata-lab.com> | 2008-05-03 04:22:01 +0000 |
---|---|---|
committer | makoto kuwata <kwa@kuwata-lab.com> | 2008-05-03 04:22:01 +0000 |
commit | 5c0477bfd60ae2035ccd73c79831f35afcb0a8f8 (patch) | |
tree | 9299e7ffa02f454a298801b46b1645363d6bcc68 /lib | |
parent | 0b66076e57243280b715d1bed89b1dc6f0e93f80 (diff) | |
download | erubis-5c0477bfd60ae2035ccd73c79831f35afcb0a8f8.tar.gz |
- [enhance] Conerter#convert_input(): convert '<%% %>' into '<% %>'
- [enhance] test-erubis.rb: add 'doublepercent1' test
- [enhance] Engine#load_file() can take :cachename property
Diffstat (limited to 'lib')
-rw-r--r-- | lib/erubis/converter.rb | 11 | ||||
-rw-r--r-- | lib/erubis/engine.rb | 11 |
2 files changed, 14 insertions, 8 deletions
diff --git a/lib/erubis/converter.rb b/lib/erubis/converter.rb index 2d66dba..3bfb2bf 100644 --- a/lib/erubis/converter.rb +++ b/lib/erubis/converter.rb @@ -111,10 +111,10 @@ module Erubis ## return regexp of pattern to parse eRuby script def pattern_regexp(pattern) - prefix, postfix = pattern.split() # '<% %>' => '<%', '%>' - #return /(.*?)(^[ \t]*)?#{prefix}(=+|\#)?(.*?)-?#{postfix}([ \t]*\r?\n)?/m - #return /(^[ \t]*)?#{prefix}(=+|\#)?(.*?)-?#{postfix}([ \t]*\r?\n)?/m - return /#{prefix}(=+|-|\#)?(.*?)([-=])?#{postfix}([ \t]*\r?\n)?/m + @prefix, @postfix = pattern.split() # '<% %>' => '<%', '%>' + #return /(.*?)(^[ \t]*)?#{@prefix}(=+|\#)?(.*?)-?#{@postfix}([ \t]*\r?\n)?/m + #return /(^[ \t]*)?#{@prefix}(=+|\#)?(.*?)-?#{@postfix}([ \t]*\r?\n)?/m + return /#{@prefix}(=+|-|\#|%)?(.*?)([-=])?#{@postfix}([ \t]*\r?\n)?/m end module_function :pattern_regexp @@ -155,6 +155,9 @@ module Erubis add_stmt(src, "\n" * n) add_text(src, rspace) if rspace end + elsif ch == ?% # <%% %> + s = "#{lspace}#{@prefix||='<%'}#{code}#{tailch}#{@postfix||='%>'}#{rspace}" + add_text(src, s) else # <% %> if @trim && lspace && rspace add_stmt(src, "#{lspace}#{code}#{rspace}") diff --git a/lib/erubis/engine.rb b/lib/erubis/engine.rb index c1e1e79..583d393 100644 --- a/lib/erubis/engine.rb +++ b/lib/erubis/engine.rb @@ -42,20 +42,23 @@ module Erubis ## ## load file, write cache file, and return engine object. - ## this method create cache file (filename + '.cache') automatically. + ## this method create code cache file automatically. + ## cachefile name can be specified with properties[:cachename], + ## or filname + 'cache' is used as default. ## def self.load_file(filename, properties={}) - cachename = filename + '.cache' + cachename = properties[:cachename] || (filename + '.cache') properties[:filename] = filename if test(?f, cachename) && File.mtime(filename) <= File.mtime(cachename) engine = self.new(nil, properties) engine.src = File.read(cachename) else - input = File.open(filename, 'rb') { |f| f.read } + input = File.open(filename, 'rb') {|f| f.read } engine = self.new(input, properties) - File.open(cachename, 'w') do |f| + File.open(cachename, 'wb') do |f| f.flock(File::LOCK_EX) f.write(engine.src) + f.flush() end end engine.src.untaint # ok? |