dependence 0.0.94 → 0.0.96

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/bin/dependence CHANGED
@@ -8,10 +8,10 @@ require 'optparse'
8
8
  class DependenceCompiler
9
9
  def initialize(config)
10
10
  @config = config
11
- @src_glob = "**/*"
12
- @concatenator = Dependence::Concatenator.new(
13
- :load_path => @config[:src_dir]
14
- )
11
+ @load_path = config[:src_dir]
12
+
13
+ ext_list = Dependence::Compiler.supported_extensions()
14
+ @source_type = "**/*{#{ext_list.join(',')}}"
15
15
  end
16
16
 
17
17
  def compile
@@ -26,7 +26,7 @@ class DependenceCompiler
26
26
  private
27
27
 
28
28
  def compile_with_watcher
29
- FileWatcher.new(:load_path => @config[:src_dir], :glob_str => @src_glob) do
29
+ FileWatcher.new(:load_path => @load_path, :glob_str => @source_type) do
30
30
  print "File change detected. Recompiling... "
31
31
  begin
32
32
  run_compile
@@ -38,31 +38,26 @@ class DependenceCompiler
38
38
  end
39
39
 
40
40
  def run_compile
41
- @concatenator.concat do |module_name, module_content|
42
- stdout_compile_msg(module_name)
43
- FileUtils::mkdir_p @config[:output]
44
-
45
- compiled = module_content
46
- compiled = ModuleInjector.modularize(module_name, module_content) unless @config[:bare]
41
+ create_output_directory()
47
42
 
48
- output = File.join(@config[:output], "#{module_name}.js")
49
- File.open(output, 'w') { |f| f.syswrite compiled }
43
+ module_dirs = Dir.glob("#{@load_path}/*/**/").map {|dir| File.expand_path(dir) }
44
+ module_dirs.delete(File.expand_path(@config[:output]))
50
45
 
51
- stdout_compile_complete_msg(module_name, output)
52
- compress_code(output) if @config[:compress]
46
+ module_dirs.each do |module_dir|
47
+ Dependence::JsModule.new(:source_dir => module_dir,
48
+ :output_dir => @config[:output],
49
+ :source_type => @source_type,
50
+ :bare => @config[:bare],
51
+ :compress => @config[:compress]).to_file
53
52
  end
54
53
  end
55
54
 
56
- def stdout_compile_msg(module_name)
57
- puts Colors.green("Detected Module: #{module_name}")
58
- end
59
-
60
- def stdout_compile_complete_msg(module_name, output)
61
- puts Colors.green("Compiled #{module_name} to #{output}")
55
+ def create_output_directory
56
+ FileUtils.mkdir_p @config[:output]
62
57
  end
63
58
 
64
59
  def compress_code(source_file)
65
- JsCompiler.new(source_file).compile
60
+ JsCompressor.new(source_file).compile
66
61
  end
67
62
  end
68
63
 
@@ -81,9 +76,6 @@ OptionParser.new do |opts|
81
76
  options[:output] = dir
82
77
  end
83
78
 
84
- opts.on("-t", "--type TYPE", "Source file extension [js, coffee]") do |type|
85
- end
86
-
87
79
  opts.on("-w", "--watch", "Watch src_dir for changes and recompile") do |bool|
88
80
  options[:watch] = bool
89
81
  end
@@ -35,12 +35,11 @@ module Dependence
35
35
  @@extensions
36
36
  end
37
37
 
38
- def compile(source_string, options = {})
38
+ def compile(source_string, options = {:bare => true})
39
39
  CoffeeScript.compile(source_string, options)
40
40
  end
41
41
  end
42
-
43
- class JavaScriptCompiler < Compiler
42
+ class JavaScriptCompiler < Compiler
44
43
  @@extensions = [:js]
45
44
 
46
45
  def self.extensions
@@ -1,63 +1,20 @@
1
- require 'fileutils'
2
- require "dependence/colors"
3
-
4
1
  module Dependence
5
- # Take a load path + file glob and concat them into 1 file per directory
6
2
  class Concatenator
7
- @@defaults = {
8
- :load_path => ".",
9
- :source_type => "**/*{#{Compiler.supported_extensions.join(',')}}"
10
- }
11
-
12
- def initialize(opts = {})
13
- @options = @@defaults.merge(opts)
14
- end
15
-
16
- def concat(&block)
17
- get_dirs.each { |dir| concat_module(dir, &block) }
18
- end
19
-
20
- private
21
-
22
- def concat_module(dir, &block)
23
- module_name = File.basename(dir)
24
-
25
- files = Dir.glob File.join(dir, @options[:source_type])
26
- no_files_error if files.empty?
27
-
28
- files_list = get_files_in_dependency_order(dir, files)
29
-
30
- block.call module_name, concat_files(files_list)
3
+ def initialize(file_list)
4
+ @files = file_list
31
5
  end
32
6
 
33
- def no_files_error
34
- puts Colors.red("No files of the specified type #{File.extname(@options[:source_type])} were found in #{@options[:load_path]}")
35
- throw :no_files_to_concatenate
36
- end
7
+ def concat_files(&block)
8
+ content = ""
37
9
 
38
- def get_files_in_dependency_order(dir, files)
39
- resolver = DependencyResolver.new(files, dir)
40
- resolver.sorted_files
41
- end
10
+ @files.each do |f|
11
+ file_content = File.read(f)
12
+ # processing
13
+ file_content = block.call(f, file_content) if block
42
14
 
43
- def concat_files(file_list)
44
- content = ""
45
- file_list.each do |f|
46
- content << compile_file(f)
47
- content << "\n"
15
+ content << file_content
48
16
  end
49
17
  content
50
18
  end
51
-
52
- def compile_file(file)
53
- compiler = Compiler.get_compiler_for(File.extname(file))
54
- compiler.new.compile(File.read(file))
55
- end
56
-
57
- # Top level dirs only
58
- def get_dirs
59
- Dir.glob("#{@options[:load_path]}/*/**/")
60
- end
61
-
62
19
  end
63
20
  end
@@ -1,7 +1,7 @@
1
1
  class FileWatcher
2
2
  @@defaults = {
3
3
  :load_path => ".",
4
- :glob_str => "**/*.js"
4
+ :glob_str => "**/*"
5
5
  }
6
6
  def initialize(opts, &block)
7
7
  @options = @@defaults.merge(opts)
@@ -1,14 +1,13 @@
1
- require "dependence/dependency_resolver"
2
1
  require "dependence/colors"
3
2
 
4
- class JsCompiler
3
+ class JsCompressor
5
4
  def initialize(source_file, output_file = nil)
6
5
  output_file = source_file.gsub(".js", ".min.js") unless output_file
7
6
  @source = source_file
8
7
  @output = output_file
9
8
  end
10
9
 
11
- def compile
10
+ def compress
12
11
  @cmd = cmd_prefix
13
12
  puts Colors.green("Compressing: #{@source}")
14
13
  puts Colors.red "Compressor Output:"
@@ -0,0 +1,66 @@
1
+ require 'dependence/js_compressor'
2
+ require 'dependence/module_injector'
3
+
4
+ module Dependence
5
+ class JsModule
6
+ attr_reader :name
7
+
8
+ def initialize(config)
9
+ raise "need to pass :source_dir to constructor" unless config[:source_dir]
10
+ raise "need to pass :source_type to constructor" unless config[:source_type]
11
+
12
+ @config = config
13
+ @name = File.basename(config[:source_dir])
14
+ @output_file = File.join(@config[:output_dir], "#{@name}.js")
15
+
16
+ @file_list = get_file_list_for_module(@config[:source_dir], @config[:source_type])
17
+ @concat = Concatenator.new(@file_list)
18
+ end
19
+
20
+ def build
21
+ stdout_compile_msg(@name)
22
+ output = @concat.concat_files do |file_path, file_contents|
23
+ extension = File.extname(file_path)
24
+ compile(extension, file_contents)
25
+ end
26
+
27
+ output = ModuleInjector.modularize(@name, output) unless @config[:bare] == true
28
+ output
29
+ end
30
+
31
+ def to_file
32
+ File.open(@output_file, 'w') do |f|
33
+ f.syswrite build()
34
+ end
35
+
36
+ JsCompressor.new(@output_file).compress if @config[:compress] == true
37
+ stdout_compile_complete_msg(@name, @output_file)
38
+ end
39
+
40
+ private
41
+
42
+ def compile(extension, source)
43
+ Compiler.get_compiler_for(extension).new.compile(source)
44
+ end
45
+
46
+ def get_file_list_for_module(dir, source_type)
47
+ files = Dir.glob File.join(dir, source_type)
48
+ no_files_error(dir) if files.empty?
49
+ DependencyResolver.new(files, dir).sorted_files
50
+ end
51
+
52
+ def no_files_error(dir)
53
+ puts Colors.red("No source files were found in #{dir}")
54
+ throw :no_files_to_concatenate
55
+ end
56
+
57
+
58
+ def stdout_compile_msg(module_name)
59
+ puts Colors.green("Compiling Module: #{module_name}")
60
+ end
61
+
62
+ def stdout_compile_complete_msg(module_name, output)
63
+ puts Colors.green("Compiled #{module_name} to #{output}")
64
+ end
65
+ end
66
+ end
data/lib/dependence.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  require "dependence/dependency_resolver.rb"
2
2
  require "dependence/module_injector.rb"
3
3
  require "dependence/compiler.rb"
4
- require "dependence/js_compiler.rb"
5
4
  require "dependence/file_watcher.rb"
6
5
  require "dependence/concatenator.rb"
6
+ require "dependence/js_module.rb"
7
+ require "dependence/js_compressor.rb"
7
8
 
8
9
  module Dependence
9
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependence
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.94
4
+ version: 0.0.96
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-09-13 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rgl
16
- requirement: &15461820 !ruby/object:Gem::Requirement
16
+ requirement: &2170518060 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *15461820
24
+ version_requirements: *2170518060
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rb-inotify
27
- requirement: &15461380 !ruby/object:Gem::Requirement
27
+ requirement: &2170517620 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *15461380
35
+ version_requirements: *2170517620
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: coffee-script
38
- requirement: &15460960 !ruby/object:Gem::Requirement
38
+ requirement: &2170517200 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *15460960
46
+ version_requirements: *2170517200
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: therubyracer
49
- requirement: &15460540 !ruby/object:Gem::Requirement
49
+ requirement: &2170516780 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *15460540
57
+ version_requirements: *2170516780
58
58
  description:
59
59
  email: jcarver989@gmail.com
60
60
  executables:
@@ -64,13 +64,14 @@ extra_rdoc_files: []
64
64
  files:
65
65
  - bin/dependence
66
66
  - compiler/compiler.jar
67
- - lib/dependence/compiler.rb
68
- - lib/dependence/js_compiler.rb
69
67
  - lib/dependence/colors.rb
68
+ - lib/dependence/compiler.rb
70
69
  - lib/dependence/concatenator.rb
71
- - lib/dependence/module_injector.rb
72
- - lib/dependence/file_watcher.rb
73
70
  - lib/dependence/dependency_resolver.rb
71
+ - lib/dependence/file_watcher.rb
72
+ - lib/dependence/js_compressor.rb
73
+ - lib/dependence/js_module.rb
74
+ - lib/dependence/module_injector.rb
74
75
  - lib/dependence.rb
75
76
  homepage:
76
77
  licenses: []
@@ -93,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
93
94
  version: '0'
94
95
  requirements: []
95
96
  rubyforge_project:
96
- rubygems_version: 1.8.10
97
+ rubygems_version: 1.8.6
97
98
  signing_key:
98
99
  specification_version: 3
99
100
  summary: An easy way to handle your client side javascript dependencies