| Class | Limelight::Templates::Templater | 
| In: | lib/limelight/templates/templater.rb | 
| Parent: | Object | 
A class to create directories and file templates. An instance of Templater must be provided with a target_root and a source_root. The target_root designates a root directory in which all directories and files will be created. The source_root designated a directory where all the file template can be found.
A file template is a plain text file. It may optionally contain token markers in the format !-TOKEN_NAME-!. When a file template is installed by the templater, all the token margers will be replaced by tokens provided in a hash.
| logger | [RW] | See TemplaterLogger | 
| source_root | [R] | |
| target_root | [R] | 
Carifies a path as relative or absolute. Essentially if makes sure a path begins with a . if it‘s not an absolute path.
  Templater.clarity('some/path') -> './some/path'
  Templater.clarity('/root/path') -> '/root/path'
          
          
    # File lib/limelight/templates/templater.rb, line 33
33:       def self.clarify(path)
34:         return path if path[0..0] == '.'
35:         return path if path == File.expand_path(path)
36:         return File.join(".", path)
37:       end
          New instances Templater require a target_root. The source_root may optionally be provided. source_root defaults to Templater.source_dir
The logger is initializes as a TemplaterLogger
    # File lib/limelight/templates/templater.rb, line 50
50:       def initialize(target_root, source_root=Templater.source_dir)
51:         @logger = TemplaterLogger.new
52:         @target_root = Templater.clarify(target_root)
53:         @source_root = source_root
54:       end
          Creates a deirectory. If the specified directory‘s parent directory is missing, it will be created as will its parent directory, and so on.
After the following call,
  templater.directory("dir1/dir2/dir3/dir4")
The following directories will exist, inside the target_root, whether they existed prior to the call or not.
dir1 dir1/dir2 dir1/dir2/dir3 dir1/dir2/dir3/dir4
    # File lib/limelight/templates/templater.rb, line 70
70:       def directory(path)
71:         full_path = File.join(@target_root, path)
72:         establish_directory(full_path)
73:       end
          Creates the specified file from the specified file template. The file will be created within the target_root. All parent diretories will be created if needed. The source paramter should be a path pointing to a file template in the source_root directory.
Assume the the file src/default.txt.template exists in the source_root with the following content.
!-SCORES-! score and !-YEARS-! years ago, ...
When the following command is executed,
  templater.file('dir/foo.txt', 'src/default.txt.template', :SCORES => "Four", :YEARS => "seven")
The file dir/foo.txt will exist in the target_root with the following content.
Four score and seven years ago, ...
     # File lib/limelight/templates/templater.rb, line 91
 91:       def file(target, source, tokens = {})
 92:         target_path = File.join(@target_root, target)
 93:         source_source = File.join(@source_root, source)
 94: 
 95:         establish_directory(File.dirname(target_path))
 96: 
 97:         if File.exists?(target_path)
 98:           @logger.file_already_exists(target_path)
 99:         else
100:           @logger.creating_file(target_path)
101:           content = IO.read(source_source)
102:           content = replace_tokens(content, tokens)
103:           File.open(target_path, 'w') { |file| file.write content }
104:         end
105:       end