def create( page, opts = {} )
tmpl = opts[:from]
raise Error, "template not given" unless tmpl
name = ::Webby::Resources.basename(page)
ext = ::Webby::Resources.extname(page)
dir = ::File.dirname(page)
dir = '' if dir == '.'
if tmpl.pathmap('%n') =~ %r/^_/
page = ::File.join(::Webby.site.content_dir, dir, '_'+name)
page << '.' << (ext.empty? ? 'txt' : ext)
elsif ::Webby.site.create_mode == 'directory' and name != 'index'
page = ::File.join(::Webby.site.content_dir, dir, name, 'index')
page << '.' << (ext.empty? ? 'txt' : ext)
else
page = ::File.join(::Webby.site.content_dir, page)
page << '.txt' if ext.empty?
end
raise Error, "#{page} already exists" if test ?e, page
Logging::Logger[self].info "creating #{page}"
FileUtils.mkdir_p ::File.dirname(page)
context = scope
opts[:locals].each do |k,v|
Thread.current[:value] = v
definition = "#{k} = Thread.current[:value]"
eval(definition, context)
end if opts.has_key?(:locals)
str = ERB.new(::File.read(tmpl), nil, '-').result(context)
::File.open(page, 'w') {|fd| fd.write str}
page
end