Class: Paste::JS::Chain

Inherits:
Base show all
Defined in:
lib/paste/js/chain.rb

Instance Method Summary collapse

Methods inherited from Base

#initialize

Methods included from Compress

#compress, #rebuild_with_compression!

Methods included from Cache

#needs_dependency_update?, #needs_update?, #rebuild, #rebuild!, #rebuild_if, #register, #registered?, #results

Methods included from Resolver

#find, #load_path, #resolve

Methods included from ERBRenderer

#render_all_erb, #render_erb

Constructor Details

This class inherits a constructor from Paste::JS::Base

Instance Method Details

#paste(*sources) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/paste/js/chain.rb', line 5

def paste *sources
  js_dependencies  = []
  css_dependencies = []

  sources.each do |source|
    name = result_name [source]
    if registered? [source]
      if needs_update?(name) || needs_dependency_update?(name)
        results[name][:parser].reset! 
      end
    else
      register [source]
    end

    source_deps  = results[name][:parser].js_dependencies
    js_dependencies = source_deps | js_dependencies
  end

  js_dependencies.map! do |d|
    result = result_name [d]
    register [d] unless registered? [d] # implicit dependencies
    write_result result if needs_update?(result)

    css_dependencies = css_dependencies |
        results[result][:parser].css_dependencies

    result
  end

  { 
    :javascript => js_dependencies,
    :css        => css_dependencies
  }
end

#result_name(sources) ⇒ Object



47
48
49
50
51
# File 'lib/paste/js/chain.rb', line 47

def result_name sources
  result = sources.first
  result += '.js' unless result.end_with?('.js')
  result
end

#write_result(result) ⇒ Object



40
41
42
43
44
45
# File 'lib/paste/js/chain.rb', line 40

def write_result result
  file = destination result

  FileUtils.mkdir_p File.dirname(file)
  FileUtils.cp find(result), file
end