summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authormakoto kuwata <kwa@kuwata-lab.com>2008-05-03 04:22:01 +0000
committermakoto kuwata <kwa@kuwata-lab.com>2008-05-03 04:22:01 +0000
commit5c0477bfd60ae2035ccd73c79831f35afcb0a8f8 (patch)
tree9299e7ffa02f454a298801b46b1645363d6bcc68 /lib
parent0b66076e57243280b715d1bed89b1dc6f0e93f80 (diff)
downloaderubis-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.rb11
-rw-r--r--lib/erubis/engine.rb11
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?