Sha256: 5e83e8f58ab73fc8ee222f5098f2fce4507b936544c2985aae04d1ed9b21f24a
Contents?: true
Size: 1.58 KB
Versions: 4
Compression:
Stored size: 1.58 KB
Contents
module Ore module Template # # Handles the expansion of paths and substitution of path keywords. # The following keywords are supported: # # * `:name:` - The name of the project. # * `:project_dir:` - The directory base-name derived from the project # name. # * `:namespace_dir:` - The full directory path derived from the # project name. # module Interpolations # The accepted interpolation keywords that may be used in paths @@keywords = %w[ name project_dir namespace_dir ] protected # # Expands the given path by substituting the interpolation keywords # for the related instance variables. # # @param [String] path # The path to expand. # # @return [String] # The expanded path. # # @example Assuming `@project_dir` contains `my_project`. # interpolate "lib/:project_dir:.rb" # # => "lib/my_project.rb" # # @example Assuming `@namespace_dir` contains `my/project`. # interpolate "spec/:namespace_dir:_spec.rb" # # => "spec/my/project_spec.rb" # def interpolate(path) dirs = path.split(File::SEPARATOR) dirs.each do |dir| dir.gsub!(/(:[a-z_]+:)/) do |capture| keyword = capture[1..-2] if @@keywords.include?(keyword) instance_variable_get("@#{keyword}") else capture end end end return File.join(dirs.reject { |dir| dir.empty? }) end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
ore-0.2.2 | lib/ore/template/interpolations.rb |
ore-0.2.1 | lib/ore/template/interpolations.rb |
ore-0.2.0 | lib/ore/template/interpolations.rb |
ore-0.1.4 | lib/ore/template/interpolations.rb |