Class/Module Index [+]

Quicksearch

Compass::Actions

Attributes

logger[W]

Public Instance Methods

basename(file) click to toggle source
# File lib/compass/actions.rb, line 78
def basename(file)
  relativize(file) {|f| File.basename(file)}
end
copy(from, to, options = nil, binary = false) click to toggle source

copy/process a template in the compass template directory to the project directory.

# File lib/compass/actions.rb, line 11
def copy(from, to, options = nil, binary = false)
  options ||= self.options if self.respond_to?(:options)
  contents = File.new(from).read
  write_file to, contents, options, binary
end
directory(dir, options = nil) click to toggle source

create a directory and all the directories necessary to reach it.

# File lib/compass/actions.rb, line 18
def directory(dir, options = nil)
  options ||= self.options if self.respond_to?(:options)
  options ||= {}
  if File.exists?(dir) && File.directory?(dir)
      # do nothing
  elsif File.exists?(dir)
    msg = "#{basename(dir)} already exists and is not a directory."
    raise Compass::FilesystemConflict.new(msg)
  else
    log_action :directory, separate("#{basename(dir)}/"), options
    FileUtils.mkdir_p(dir) unless options[:dry_run]
  end
end
log_action(action, file, options) click to toggle source
# File lib/compass/actions.rb, line 102
def log_action(action, file, options)
  quiet = !!options[:quiet]
  quiet = false if options[:loud] && options[:loud] == true
  quiet = false if options[:loud] && options[:loud].is_a?(Array) && options[:loud].include?(action)
  unless quiet
    logger.record(action, file, options[:extra].to_s)
  end
end
logger() click to toggle source
# File lib/compass/actions.rb, line 6
def logger
  @logger ||= ::Compass::Logger.new
end
process_erb(contents, ctx = nil) click to toggle source
# File lib/compass/actions.rb, line 62
def process_erb(contents, ctx = nil)
  ctx = Object.new.instance_eval("binding") unless ctx.is_a? Binding
  ERB.new(contents).result(ctx)
end
relativize(path) click to toggle source
# File lib/compass/actions.rb, line 82
def relativize(path)
  if path.index(working_path+File::SEPARATOR) == 0
    path[(working_path+File::SEPARATOR).length..-1]
  elsif block_given?
    yield path
  else
    path
  end
end
remove(file_name) click to toggle source
# File lib/compass/actions.rb, line 67
def remove(file_name)
  file_name ||= ''
  if File.directory?(file_name)
    FileUtils.rm_rf file_name
    log_action :remove, basename(file_name)+"/", options
  elsif File.exists?(file_name)
    File.unlink file_name
    log_action :remove, basename(file_name), options
  end
end
separate(path) click to toggle source

Write paths like we’re on unix and then fix it

# File lib/compass/actions.rb, line 93
def separate(path)
  path.gsub(%{/}, File::SEPARATOR)
end
strip_trailing_separator(path) click to toggle source

Removes the trailing separator, if any, from a path.

# File lib/compass/actions.rb, line 98
def strip_trailing_separator(path)
  (path[-1..-1] == File::SEPARATOR) ? path[0..-2] : path
end
write_file(file_name, contents, options = nil, binary = false) click to toggle source

Write a file given the file contents as a string

# File lib/compass/actions.rb, line 33
def write_file(file_name, contents, options = nil, binary = false)
  options ||= self.options if self.respond_to?(:options)
  skip_write = options[:dry_run]
  contents = process_erb(contents, options[:erb]) if options[:erb]
  if File.exists?(file_name)
    existing_contents = IO.read(file_name)
    if existing_contents == contents
      log_action :identical, basename(file_name), options
      skip_write = true
    elsif options[:force]
      log_action :overwrite, basename(file_name), options
    else
      msg = "File #{basename(file_name)} already exists. Run with --force to force overwrite."
      raise Compass::FilesystemConflict.new(msg)
    end
  else
    log_action :create, basename(file_name), options
  end
  if skip_write
    FileUtils.touch file_name unless options[:dry_run]
  else
    mode = "w"
    mode << "b" if binary
    open(file_name, mode) do |file|
      file.write(contents)
    end
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.