Class: Yop::Template
Overview
A Yop Template, which consists of a base directory and an hash of variables
Instance Attribute Summary collapse
-
#ui ⇒ Yop::UI
writeonly
The UI used to get unknown variables.
Instance Method Summary collapse
-
#[]=(name, value) ⇒ Any
Shortcut to add a template variable.
-
#apply(directory) ⇒ Object
Apply the template on a directory.
-
#initialize(base_directory, vars = {}, config = {}) ⇒ Template
constructor
Create a new template from a base directory.
Constructor Details
#initialize(base_directory, vars = {}, config = {}) ⇒ Template
Create a new template from a base directory
44 45 46 47 48 49 50 |
# File 'lib/yop/templates.rb', line 44 def initialize(base_directory, vars = {}, config = {}) @base = base_directory @vars = vars @config = config compile_var_pattern! end |
Instance Attribute Details
#ui=(value) ⇒ Yop::UI (writeonly)
The UI used to get unknown variables
35 36 37 |
# File 'lib/yop/templates.rb', line 35 def ui=(value) @ui = value end |
Instance Method Details
#[]=(name, value) ⇒ Any
Shortcut to add a template variable
91 92 93 |
# File 'lib/yop/templates.rb', line 91 def []=(name, value) @vars[name.to_s] = value end |
#apply(directory) ⇒ Object
Apply the template on a directory. It creates it if it doesn’t exist, then recursively copies itself in it
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/yop/templates.rb', line 56 def apply(directory) mkdir_p directory # get relative paths sources = [] cd(@base) { sources = Dir["**/*", "**/.*"] } cd directory do sources.each do |path| next if skip? path source = "#{@base}/#{path}" path = replace_vars_in_path path if File.symlink? source copy_entry source, path elsif File.directory? source mkdir_p path elsif File.file? source File.open(path, "w") do |f| content = replace_vars source f.write(content) end else fail UnsupportedFileType, source end mirror_perms source, path end end end |