# File lib/thor/actions/file_manipulation.rb, line 108 def template(source, *args, &block) config = args.last.is_a?(Hash) ? args.pop : {} destination = args.first || source.sub(/#{TEMPLATE_EXTNAME}$/, "") source = File.expand_path(find_in_source_paths(source.to_s)) context = config.delete(:context) || instance_eval("binding") create_file destination, nil, config do content = CapturableERB.new(::File.binread(source), nil, "-", "@output_buffer").result(context) content = yield(content) if block content end end