class DynamicSprites::Runner

Attributes

command[R]
interface[R]
options[R]
path[R]

Public Class Methods

new(command, path, options = {}) click to toggle source
# File lib/dynamic-sprites/runner.rb, line 9
def initialize(command, path, options = {})
  @interface = Interface.new
  @command = command
  @path = Pathname.new(path) unless path.nil?
  @path ||= File.join(sass_directory, 'dynamic-sprites.sass') unless command.nil?
  @options = options
  @options[:output] ||= "#{@path}.png"
end

Public Instance Methods

run!() click to toggle source

Runs dynamic-sprites command.

# File lib/dynamic-sprites/runner.rb, line 20
def run!
  case command
  when 'init'
    generate_mixin!
  when 'generate'
    generate_sprite!
  end
end

Private Instance Methods

generate_mixin!() click to toggle source

Generates mixin in provided path or initializes user interface to determine it otherwise.

# File lib/dynamic-sprites/runner.rb, line 33
def generate_mixin!
  FileUtils.copy DynamicSprites.mixin_source_path, path
  interface.generate_mixin_summary(path)
end
generate_sprite!() click to toggle source

Generates sprite using provided options.

# File lib/dynamic-sprites/runner.rb, line 40
def generate_sprite!
  generator = Generator.new(options[:output], path, options[:layout], options[:geometry])
  generator.run!
  interface.generate_sprite_summary(@options[:output], generator.mixin_call)
end
sass_directories() click to toggle source

Returns an Array of possible paths to directories of project .sass files.

# File lib/dynamic-sprites/runner.rb, line 61
def sass_directories
  style_directories = []
  Find.find(Dir.pwd) do |path|
    next unless FileTest.directory?(path)
    if File.basename(path).match(/sass|style/)
      style_directories << Pathname.new(path)
    elsif File.basename(path)[0] == ?.
      Find.prune
    else
      next
    end
  end
  style_directories
end
sass_directory() click to toggle source

Chooses one of possible options of defining sass directory path.

# File lib/dynamic-sprites/runner.rb, line 48
def sass_directory
  case sass_directories.size
  when 0
    interface.prompt_directory
  when 1
    sass_directories.first
  else
    interface.choose_directory(sass_directories)
  end
end