Class: ActiveAssets::ActiveSprites::AbstractRunner

Inherits:
Object
  • Object
show all
Defined in:
lib/active_assets/active_sprites/runners/abstract_runner.rb

Direct Known Subclasses

ChunkyPngRunner, MiniMagickRunner, RmagickRunner

Defined Under Namespace

Classes: AssetContext

Instance Method Summary collapse

Constructor Details

#initialize(railtie, sprites) ⇒ AbstractRunner

Returns a new instance of AbstractRunner.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/active_assets/active_sprites/runners/abstract_runner.rb', line 13

def initialize(railtie, sprites)
  @railtie = railtie
  @sprites = if ENV['SPRITE']
    sprites.select do |name, sprite|
      ENV['SPRITE'].split(',').map(&:strip).any? do |sp|
        # were going to be very forgiving
        name == sp ||
        name == sp.to_sym ||
        name == ::Rack::Mount::Utils.normalize_path(sp)
      end
    end.map(&:last)
  else
    sprites.values
  end
end

Instance Method Details

#generate!Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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
86
# File 'lib/active_assets/active_sprites/runners/abstract_runner.rb', line 29

def generate!
  verbose = ENV['VERBOSE'] == 'true' || ENV['DEBUG']

  if verbose
    t = Time.now
    $stdout << "#{t}: Active Sprites: \"I'm starting my run using #{runner_name}.\"\n" 
    $stdout << "\nSprites to create:\n\"#{@sprites.map(&:path).join('", "')}\"\n"
  end

  @sprites.each do |sprite|
    next if sprite.sprite_pieces.empty?

    if verbose
      t_sprite = Time.now
      $stdout << "\n=================================================\n"
      $stdout << "Starting Sprite, #{sprite.path}\n"
    end

    sprite_path = image_computed_path(sprite.path)
    sprite_stylesheet_path = stylesheet_computed_path(sprite.stylesheet_path)

    orientation = sprite.orientation.to_s
    sprite_pieces = sprite.sprite_pieces

    begin
      $stdout << "Gathering sprite details..." if verbose
      image_list, width, height = set_sprite_details_and_return_image_list(sprite, sprite_path, sprite_pieces, orientation)
      $stdout << "done.\n" if verbose

      if ENV['DEBUG']
        $stdout << "|\tpath\t|\tselectors\t|\tx\t|\ty\t|\twidth\t|\theight\t|\n"
        $stdout << "#{sprite_pieces.map(&:to_s).join("\n")}\n"
      end

      stylesheet = SpriteStylesheet.new(sprite_pieces)
      stylesheet_file_path = File.join(@railtie.config.paths.public.to_a.first, sprite_stylesheet_path)
      $stdout << "Writing stylesheet to #{stylesheet_file_path} ... " if verbose
      stylesheet.write stylesheet_file_path
      $stdout << "done.\n" if verbose

      $stdout << "Beginning sprite generation using #{runner_name.humanize}.\n" if verbose
      create_sprite(sprite, sprite_path, sprite_pieces, image_list, width, height, orientation, verbose)
      $stdout << "Success!\n" if verbose

      sprite_file_path = File.join(@railtie.config.paths.public.to_a.first, sprite_path)
      $stdout << "Writing sprite to #{sprite_file_path} ... " if verbose
      write sprite_file_path, sprite.quality
      $stdout << "done.\n" if verbose

      $stdout << "Finished #{sprite.path} in #{Time.now - t_sprite} seconds.\n" if verbose
      $stdout << "=================================================\n\n" if verbose
    ensure
      finish
    end
  end

  $stdout << "#{Time.now}: ActiveSprites \"I finished my run in #{Time.now - t} seconds.\"\n" if verbose
end