Skip to content

Commit

Permalink
sent environment variables to templates: src and dest files information.
Browse files Browse the repository at this point in the history
  • Loading branch information
tdtds committed Nov 10, 2010
1 parent e6fdf3f commit cf3b26c
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 21 deletions.
47 changes: 32 additions & 15 deletions lib/rego/app.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -13,61 +13,78 @@ class MakeLink < REGOError; end
class App class App
def initialize( src, dest, opt = {} ) def initialize( src, dest, opt = {} )
@src, @dest, @opt = src, dest, opt @src, @dest, @opt = src, dest, opt
@src.chop! if %r|/$| =~ @src
@dest.chop! if %r|/$| =~ @dest
@env = {
:src => @src,
:dest => @dest
}
end end


def run def run
Pathname::glob( "#{@src}/**/{.*,*}" ) do |src| Pathname::glob( "#{@src}/**/{.*,*}" ) do |src|
relative = src.to_s[@src.size, src.to_s.size] relative = src.to_s[@src.size, src.to_s.size]
@env[:src_file] = relative
@env[:dest_file] = relative.dup


if src.directory? if src.directory?
Pathname::new( @dest + relative ).mkpath Pathname::new( @dest + relative ).mkpath
else else
case src.to_s case src.to_s
when /\.rego$/ when /\.rego$/
r = relative.sub( /\.rego$/, '' ) @env[:dest_file] = relative.sub( /\.rego$/, '' )
begin begin
next if !@opt[:force] && (src.mtime < Pathname::new( @dest + r ).mtime) next if !@opt[:force] && (src.mtime < Pathname::new( dest_file( @env ) ).mtime)
rescue Errno::ENOENT rescue Errno::ENOENT
end end
$stderr.puts relative if @opt[:verbose] $stderr.puts relative if @opt[:verbose]
processing( src, @dest, r, :template ) processing( @env, :template )
when /\.ignore$/ when /\.ignore$/
# ignore this file # ignore this file
else else
processing( src, @dest, relative, :symlink ) processing( @env, :symlink )
end end
end end
end end
end end


def processing( src_file, dest_path, relative_file, filter ) private
def src_file( env )
env[:src] + env[:src_file]
end

def dest_file( env )
env[:dest] + env[:dest_file]
end

def processing( env, filter )
result = '' result = ''
begin begin
File::open( src_file, 'r:utf-8' ) do |f| File::open( src_file( env ), 'r:utf-8' ) do |f|
result = __send__( filter, f.read, relative_file ) result = __send__( filter, f.read, env )
end end
File::open( dest_path + relative_file, 'w' ) do |f| File::open( dest_file( env ), 'w' ) do |f|
f.write( result ) f.write( result )
end end
rescue MakeLink rescue MakeLink
Pathname::new(dest_path + relative_file).make_symlink( src_file ) rescue Errno::EEXIST Pathname::new( dest_file( env ) ).make_symlink( src_file( env ) ) rescue Errno::EEXIST
end end
end end


def template( tmpl, relative ) def template( tmpl, env )
tmpl.insert( 0, "do_template {\nrelative '#{relative}'\n" ) << "\n}" tmpl.insert( 0, "do_template( env ) {\n" ) << "\n}"
instance_eval( tmpl ) instance_eval( tmpl )
end end


def do_template( &block ) def do_template( env, &block )
REGO::Block::Template::new( &block ).result REGO::Block::Template::new( env, &block ).result
end end


def dead_copy( tmpl, relative ) def dead_copy( tmpl, env )
tmpl tmpl
end end


def symlink( tmpl, relative ) def symlink( tmpl, env )
raise MakeLink::new raise MakeLink::new
end end
end end
Expand Down
9 changes: 3 additions & 6 deletions lib/rego/block/template.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -7,16 +7,13 @@


module REGO::Block module REGO::Block
class Template class Template
def initialize( &block ) def initialize( env, &block )
@env = env
@child = [] @child = []
instance_eval( &block ) if block_given? instance_eval( &block ) if block_given?
self self
end end


def relative( file_name )
@@relative = file_name.sub( %r|/index.html$|, '/' )
end

def result def result
@child.join( "\n" ) @child.join( "\n" )
end end
Expand All @@ -25,7 +22,7 @@ def method_missing( name, *args, &block )
if block if block
begin begin
klass = REGO::Block::const_get( name.to_s.capitalize ) klass = REGO::Block::const_get( name.to_s.capitalize )
@child << klass::new( &block ).result @child << klass::new( @env, &block ).result
rescue NameError rescue NameError
begin begin
require name.to_s require name.to_s
Expand Down

0 comments on commit cf3b26c

Please sign in to comment.