rapper_lite 0.1.0 → 0.1.1

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/Gemfile CHANGED
@@ -7,4 +7,7 @@ group :development do
7
7
  gem "rdiscount", "~> 1.6.8"
8
8
  gem "jeweler", "~> 1.6.4"
9
9
  gem "yui-compressor", "~> 0.9.6"
10
+ gem "fssm", "~> 0.2.7"
11
+ gem "rb-fsevent"
12
+ gem "coffee-script", "~> 2.2.0"
10
13
  end
@@ -5,13 +5,22 @@ GEM
5
5
  Platform (>= 0.4.0)
6
6
  open4
7
7
  Platform (0.4.0)
8
+ coffee-script (2.2.0)
9
+ coffee-script-source
10
+ execjs
11
+ coffee-script-source (1.1.2)
12
+ execjs (1.2.9)
13
+ multi_json (~> 1.0)
14
+ fssm (0.2.7)
8
15
  git (1.2.5)
9
16
  jeweler (1.6.4)
10
17
  bundler (~> 1.0)
11
18
  git (>= 1.2.5)
12
19
  rake
20
+ multi_json (1.0.3)
13
21
  open4 (1.0.1)
14
22
  rake (0.9.2)
23
+ rb-fsevent (0.4.3.1)
15
24
  rdiscount (1.6.8)
16
25
  rspec (1.3.2)
17
26
  yard (0.6.4)
@@ -23,8 +32,11 @@ PLATFORMS
23
32
  ruby
24
33
 
25
34
  DEPENDENCIES
35
+ coffee-script (~> 2.2.0)
36
+ fssm (~> 0.2.7)
26
37
  jeweler (~> 1.6.4)
27
38
  rake (~> 0.9.2)
39
+ rb-fsevent
28
40
  rdiscount (~> 1.6.8)
29
41
  rspec (~> 1.3.2)
30
42
  yard
@@ -1,6 +1,6 @@
1
1
  # rapper_lite #
2
2
 
3
- Bare-bones static asset packager and compressor. Currently supports CSS and JavaScript. Uses MD5 versioning to avoid re-compressing packages that don't need to be re-compressed. Uses a simple config file so that you don't have to wrangle wacky comment DSLs in your source code just to join and compress a few files.
3
+ Bare-bones static asset packager and compressor. Currently supports CSS, JavaScript, and CoffeeScript. Uses MD5 versioning to avoid re-compressing packages that don't need to be re-compressed. Uses a simple config file so that you don't have to wrangle wacky comment DSLs in your source code just to join and compress a few files.
4
4
 
5
5
  ## Packaging assets without wanting to claw your eyes out
6
6
 
@@ -33,7 +33,18 @@ Bare-bones static asset packager and compressor. Currently supports CSS and Java
33
33
 
34
34
  2. Run rapper lite:
35
35
 
36
- $ rapper_lite config/assets.yml
36
+ $ rapper_lite config/static_assets.yml
37
+
38
+ Watch for changes:
39
+
40
+ $ rapper_lite --watch config/static_assets.yml
41
+
42
+ If no config file is passed in, RapperLite will search for the config file:
43
+
44
+ ./rapper.yml
45
+ ./assets.yml
46
+ ./config/rapper.yml
47
+ ./config/assets.yml
37
48
 
38
49
  3. That's it.
39
50
 
@@ -53,6 +64,8 @@ Rapper's got a Gemfile. You know what to do.
53
64
 
54
65
  ## Version history
55
66
 
67
+ * **0.1.1** - Turns out you can only release `master`, which `jeweler` doesn't tell you. Oops.
68
+ * **0.1.0** - Add CoffeeScript support. Re-write `rapper_lite` command to allow watching for changes. Add watch support to Rake task.
56
69
  * **0.0.2** - Fix gem homepage link.
57
70
  * **0.0.1** - Initial release.
58
71
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.1.1
@@ -1,19 +1,44 @@
1
1
  #!/usr/bin/env ruby
2
- #
2
+
3
3
  require File.join( File.expand_path( File.dirname(__FILE__) ), '../lib/rapper_lite' )
4
+ require "optparse"
5
+ require "fssm"
6
+ require "rb-fsevent"
4
7
 
5
- def config_path
6
- return ARGV[0] if ARGV[0]
7
- ["", "config/"].each do |folder|
8
- ["rapper.yml", "assets.yml"].each do |file|
9
- path = File.expand_path( file, folder )
10
- return path if File.exists?( path )
8
+ module RapperLite
9
+ class CommandLine
10
+
11
+ attr_reader :rapper
12
+
13
+ def initialize
14
+ args, options = self.parse_args
15
+ @config_path = args.first || RapperLite::Engine.find_config_path
16
+ @rapper = self.build_rapper_engine
17
+ options[:watch] ? @rapper.watch : @rapper.noisy_package
18
+ end
19
+
20
+ def build_rapper_engine
21
+ puts "Loading RapperLite with #{@config_path}"
22
+ RapperLite::Engine.new( @config_path )
23
+ end
24
+
25
+ protected
26
+
27
+ def parse_args
28
+ options = {}
29
+ OptionParser.new do |opts|
30
+ opts.banner = "Usage: #{File.basename(__FILE__)} [-w|--watch] [-h|--help] [configfile]"
31
+ opts.on( "-h", "--help", "Print this message") do
32
+ p opts
33
+ exit 1
34
+ end
35
+ opts.on( "-w", "--watch", "Watch files for changes") do
36
+ options[:watch] = true
37
+ end
38
+ end.parse!
39
+ [ARGV, options]
11
40
  end
12
41
  end
13
- raise "No config file found."
14
42
  end
15
43
 
16
- config = config_path
17
- puts "Packaging assets, using: #{config}"
18
- RapperLite::Engine.new( config_path ).package
19
- puts "Done!"
44
+ RapperLite::CommandLine.new
@@ -1,10 +1,12 @@
1
+ require "rubygems"
2
+ require "bundler/setup"
1
3
  require 'yaml'
2
4
 
3
5
  module RapperLite; end
4
6
  Dir[File.expand_path( "#{File.dirname( __FILE__ )}/rapper_lite/*.rb" )].each do |file|
5
7
  require file
6
8
  end
7
- # TODO: Re-enable
9
+ # TODO: Re-enable?
8
10
  # require File.dirname( __FILE__ ) + "/tasks.rb"
9
11
 
10
12
  # No batteries included, and no strings attached /
@@ -12,34 +14,35 @@ end
12
14
  # Gots to get the loot so I can bring home the bacon
13
15
  module RapperLite
14
16
  class Engine
17
+ include RapperLite::Build
18
+ include RapperLite::Compressors
15
19
  include RapperLite::Config
16
20
  include RapperLite::Utils
17
- include RapperLite::Compressors
18
21
  include RapperLite::Versioning
19
22
 
20
23
  def initialize( config_path )
21
- @config = {}
22
- @definitions = Struct.new( :css, :js ).new
23
24
  self.load_config( config_path )
24
25
  end
25
26
 
27
+ def self.find_config_path
28
+ ["./", "config/"].each do |folder|
29
+ ["rapper.yml", "assets.yml"].each do |file|
30
+ path = File.expand_path( file, folder )
31
+ return path if File.exists?( path )
32
+ end
33
+ end
34
+ raise "No config file found."
35
+ end
36
+
26
37
  def package
27
38
  [:js, :css].each do |type|
28
39
  definition = @definitions[type]
29
40
  source = File.expand_path( self.root( type ) )
30
41
 
31
42
  definition.each do |name, spec|
32
- next if name == "root" || name == "destination"
43
+ next if self.config_key?( name ) # Skip config settings
33
44
  next unless self.needs_packaging?( type, name )
34
-
35
- source_files = self.file_paths( type, name )
36
- destination_file = self.destination_path( type, name )
37
-
38
- self.join_files( source_files, destination_file )
39
-
40
- if self.compress?
41
- self.compress( destination_file )
42
- end
45
+ self.build_package( type, name )
43
46
  end
44
47
  end
45
48
 
@@ -0,0 +1,31 @@
1
+ require "coffee-script"
2
+
3
+ module RapperLite::Build
4
+
5
+ def build_package( type, name )
6
+ source_paths = self.file_paths( type, name )
7
+ destination_file = self.destination_path( type, name )
8
+ tempfiles = []
9
+
10
+ # Convert any CoffeeScript to JS
11
+ if type == :js
12
+ source_paths.map! do |source_path|
13
+ if File.extname( source_path ) == ".coffee"
14
+ tempfile = Tempfile.new( "rapper_lite_coffee" )
15
+ tempfile.write( CoffeeScript.compile( File.read( source_path ) ) )
16
+ tempfile.close
17
+ tempfile.path
18
+ else
19
+ source_path
20
+ end
21
+ end
22
+ end
23
+
24
+ # Join files and compress if needed
25
+ self.join_files( source_paths, destination_file )
26
+ self.compress( destination_file ) if self.compress?( type )
27
+
28
+ # Cleanup
29
+ tempfiles.each{ |tempfile| tempfile.unlink }
30
+ end
31
+ end
@@ -9,11 +9,11 @@ rescue LoadError; end
9
9
  module RapperLite::Compressors
10
10
 
11
11
  # Compress a file in-place. Relies on the file's suffix to determine type.
12
- def compress( file )
12
+ def compress( file_path )
13
13
  opts = {}
14
14
  # TODO: Someday this goes away.
15
- opts = self.yui_config if file =~ /\.js/
16
- RapperLite::Compressors::Compressor.compress( file, opts )
15
+ opts = self.yui_config if file_path =~ /\.js/
16
+ RapperLite::Compressors::Compressor.compress( file_path, opts )
17
17
  end
18
18
 
19
19
  protected
@@ -1,32 +1,18 @@
1
1
  module RapperLite::Config
2
2
 
3
- protected
4
-
5
- def load_config( config_path )
6
- @config_path = config_path
7
- @config = YAML.load_file( config_path )
8
- @definitions.css = @config["css"]
9
- @definitions.js = @config["js"]
10
- end
11
-
12
- def save_config
13
- File.open( @config_path, "w" ) do |file|
14
- file.puts @config.to_yaml
15
- end
16
- end
17
-
3
+ # Source path for files of the given type.
18
4
  def root( type )
19
- assert_type!( type )
20
- @definitions.send( type )["root"] || @config["root"] || "."
5
+ self.config_or_default( "root", type, "." )
21
6
  end
22
7
 
8
+ # Destination path for files of the given type.
23
9
  def destination( type )
24
- assert_type!( type )
25
- @definitions.send( type )["destination"] || @config["destination"] || "."
10
+ self.config_or_default( "destination", type, "." )
26
11
  end
27
12
 
28
- def compress?
29
- @config.key?( "compress" ) ? @config["compress"] : false
13
+ # True if we should compress files of the given type.
14
+ def compress?( type )
15
+ self.config_or_default( "compress", type, false )
30
16
  end
31
17
 
32
18
  def yui_config
@@ -40,13 +26,16 @@ module RapperLite::Config
40
26
 
41
27
  # Array of source files for the given asset package.
42
28
  def file_paths( type, name )
43
- definition = @definitions[type][name]
44
- root = self.root( type )
45
- definition["files"].map do |file|
29
+ @definitions[type][name]["files"].map do |file|
46
30
  if file[0] == "+"
31
+ # Include other asset package
47
32
  self.file_paths( type, file[1..-1] )
33
+ elsif type == :js
34
+ coffee_path = File.join( self.root( type ), "#{file}.coffee" )
35
+ js_path = File.join( self.root( type ), "#{file}.js" )
36
+ File.exists?( coffee_path ) ? coffee_path : js_path
48
37
  else
49
- File.join( root, "#{file}.#{type}" )
38
+ File.join( self.root( type ), "#{file}.#{type}" )
50
39
  end
51
40
  end.flatten
52
41
  end
@@ -55,7 +44,29 @@ module RapperLite::Config
55
44
  File.join( self.destination( type ), "#{name}.#{type}" )
56
45
  end
57
46
 
58
- def assert_type!( type )
59
- raise "wat." unless type == :css || type == :js
47
+ protected
48
+
49
+ def load_config( config_path )
50
+ @config_path = config_path
51
+ @config = YAML.load_file( @config_path )
52
+ @definitions = {
53
+ :css => @config["css"],
54
+ :js => @config["js"]
55
+ }
56
+ end
57
+
58
+ # Write in-memory config to file (i.e. just update version strings).
59
+ def save_config
60
+ File.open( @config_path, "w" ) do |file|
61
+ file.puts( @config.to_yaml )
62
+ end
63
+ end
64
+
65
+ def config_or_default( key, type, default )
66
+ if @definitions[type].key?( key )
67
+ @definitions[type][key]
68
+ else
69
+ @config.key?( key ) ? @config[key] : default
70
+ end
60
71
  end
61
72
  end
@@ -1,19 +1,23 @@
1
- # Rapper-wide utility methods for working with paths, files, etc.
2
1
  module RapperLite::Utils
3
-
2
+
4
3
  protected
5
-
6
- # Concatenate one or more files. Uses <code>cat</code>.
7
- #
8
- # @param [Array<String>,String] source_files A path or array of paths to
9
- # files to concatenate.
10
- #
11
- # @param [String] destination_file Destination for concatenated output.
12
- def join_files( source_files, destination_file )
13
- source_files = Array( source_files )
14
- source_files.any? do |path|
4
+
5
+ # Concatenate one or more files by shelling out to `cat`.
6
+ def join_files( source_paths, destination_path )
7
+ source_paths = Array( source_paths )
8
+ source_paths.each do |path|
15
9
  raise "#{path} doesn't exist." unless File.exists?( path )
16
10
  end
17
- system "cat #{source_files.join( " " )} > #{destination_file}"
11
+
12
+ system "cat #{source_paths.join( " " )} > #{destination_path}"
13
+ end
14
+
15
+ # True if the given string is a reserved config key name.
16
+ def config_key?( key )
17
+ self.config_keys.include?( key )
18
+ end
19
+
20
+ def config_keys
21
+ %w( root destination compress )
18
22
  end
19
23
  end
@@ -4,35 +4,29 @@ require 'tempfile'
4
4
  # Asset versioning methods.
5
5
  module RapperLite::Versioning
6
6
 
7
+ def needs_packaging?( type, name )
8
+ return true unless File.exists?( self.destination_path( type, name ) )
9
+ self.version( type, name ) != @definitions[type][name]["version"]
10
+ end
11
+
7
12
  protected
8
13
 
9
- def needs_packaging?( type, name )
10
- definition = @definitions[type][name]
11
- destination_file = self.destination_path( type, name )
12
- return true unless File.exists?( destination_file )
13
-
14
- current_version = definition["version"]
15
- new_version = self.version( type, name )
16
- new_version != current_version
14
+ # MD5 version of the concatenated raw asset package.
15
+ def version( type, name )
16
+ source_paths = self.file_paths( type, name )
17
+ destination_file = Tempfile.new( 'rapper' )
18
+ self.join_files( source_paths, destination_file.path )
19
+ version = Digest::MD5.file( destination_file.path ).to_s[0,7]
20
+ destination_file.unlink
21
+ version
17
22
  end
18
23
 
19
24
  def refresh_versions
20
25
  [:css, :js].each do |type|
21
26
  @definitions[type].each do |name, spec|
22
- next if name == "root" || name == "destination"
27
+ next if self.config_key?( name )
23
28
  @definitions[type][name]["version"] = self.version( type, name )
24
29
  end
25
30
  end
26
31
  end
27
-
28
- # MD5 version of the concatenated asset package.
29
- def version( type, name )
30
- definition = @definitions[type][name]
31
- source_files = self.file_paths( type, name )
32
- destination_file = Tempfile.new( 'rapper' )
33
- self.join_files( source_files, destination_file.path )
34
- version = Digest::MD5.file( destination_file.path ).to_s[0,4]
35
- destination_file.unlink
36
- version
37
- end
38
32
  end
@@ -0,0 +1,46 @@
1
+ module RapperLite
2
+ class Engine
3
+
4
+ def watch
5
+ rapper = self
6
+ rapper.noisy_package
7
+ FSSM.monitor( rapper.common_root, '**/*.{css,js,coffee}' ) do
8
+ component_files = rapper.all_component_paths
9
+ update do |base, relative|
10
+ if component_files.include?( File.join( base, relative) )
11
+ rapper.noisy_package
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ def noisy_package
18
+ print( "Compiling static assets..." ) && STDOUT.flush
19
+ self.package
20
+ puts " Done!"
21
+ end
22
+
23
+ # LCD for JS and CSS roots
24
+ def common_root
25
+ js_path = File.expand_path( self.root( :js ) ).split( "/" )
26
+ css_path = File.expand_path( self.root( :css ) ).split( "/" )
27
+ path = []
28
+ while js_component = js_path.shift && css_component = css_path.shift
29
+ break if js_component != css_component
30
+ path << js_component
31
+ end
32
+ path.join( "/" )
33
+ end
34
+
35
+ # All absolute file paths for the component files
36
+ def all_component_paths
37
+ [:css, :js].map do |type|
38
+ (@definitions[type].keys - self.config_keys).map do |name|
39
+ self.file_paths( type, name )
40
+ end
41
+ end.flatten.uniq.map do |path|
42
+ File.expand_path( path )
43
+ end
44
+ end
45
+ end
46
+ end
@@ -1,4 +1,4 @@
1
- module Rapper
1
+ module RapperLite
2
2
 
3
3
  # Rake tasks for building / refreshing packages
4
4
  class Tasks
@@ -31,6 +31,16 @@ module Rapper
31
31
  task :package do
32
32
  @rapper.package
33
33
  end
34
+
35
+ desc "Watch static assets and re-package when necessary"
36
+ task :watch do
37
+ begin
38
+ RapperLite::Engine.method( :watch )
39
+ rescue NameError
40
+ raise "You need to `require 'rapper_lite/watch_support'`, first."
41
+ end
42
+ @rapper.watch
43
+ end
34
44
  end
35
45
  end
36
46
  end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "rapper_lite"
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Tyson Tate"]
@@ -26,13 +26,16 @@ Gem::Specification.new do |s|
26
26
  "VERSION",
27
27
  "bin/rapper_lite",
28
28
  "lib/rapper_lite.rb",
29
+ "lib/rapper_lite/build.rb",
29
30
  "lib/rapper_lite/compressors.rb",
30
31
  "lib/rapper_lite/config.rb",
31
32
  "lib/rapper_lite/utils.rb",
32
33
  "lib/rapper_lite/versioning.rb",
34
+ "lib/rapper_lite/watch_support.rb",
33
35
  "lib/tasks.rb",
34
36
  "lib/yui/css_compressor.rb",
35
37
  "rapper_lite.gemspec",
38
+ "spec/fixtures/src/coffeescript.coffee",
36
39
  "spec/fixtures/src/simple_1.css",
37
40
  "spec/fixtures/src/simple_1.js",
38
41
  "spec/fixtures/src/simple_2.css",
@@ -0,0 +1 @@
1
+ x: -> true
@@ -1 +1 @@
1
- a=1;b=2;function b(){return false}var x=1;var y=2;function a(){return true}a=1;b=2;function b(){return false};
1
+ a=1;b=2;function b(){return false}var x=1;var y=2;function a(){return true}a=1;b=2;function b(){return false}(function(){({x:function(){return true}})}).call(this);
@@ -7,20 +7,21 @@
7
7
  - files:
8
8
  - simple_1
9
9
  - simple_2
10
- - version: 683e
10
+ - version: 683e7ae
11
11
  - base_combined: !omap
12
12
  - files:
13
13
  - +base
14
14
  - simple_1
15
- - version: 0bb9
15
+ - version: 0bb9443
16
16
  - js: !omap
17
17
  - base: !omap
18
18
  - files:
19
19
  - simple_1
20
20
  - subfolder/simple_2
21
- - version: f3d9
21
+ - version: f3d92a9
22
22
  - base_combined: !omap
23
23
  - files:
24
24
  - subfolder/simple_2
25
25
  - +base
26
- - version: ccfc
26
+ - coffeescript
27
+ - version: 75d7058
@@ -13,3 +13,10 @@ b = 2;
13
13
  function b() {
14
14
  return false;
15
15
  }
16
+ (function() {
17
+ ({
18
+ x: function() {
19
+ return true;
20
+ }
21
+ });
22
+ }).call(this);
@@ -7,20 +7,21 @@
7
7
  - files:
8
8
  - simple_1
9
9
  - simple_2
10
- - version: 683e
10
+ - version: 683e7ae
11
11
  - base_combined: !omap
12
12
  - files:
13
13
  - +base
14
14
  - simple_1
15
- - version: 0bb9
15
+ - version: 0bb9443
16
16
  - js: !omap
17
17
  - base: !omap
18
18
  - files:
19
19
  - simple_1
20
20
  - subfolder/simple_2
21
- - version: f3d9
21
+ - version: f3d92a9
22
22
  - base_combined: !omap
23
23
  - files:
24
24
  - subfolder/simple_2
25
25
  - +base
26
- - version: ccfc
26
+ - coffeescript
27
+ - version: 75d7058
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rapper_lite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-10-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70109260465380 !ruby/object:Gem::Requirement
16
+ requirement: &70105090745260 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.9.2
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70109260465380
24
+ version_requirements: *70105090745260
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70109260464820 !ruby/object:Gem::Requirement
27
+ requirement: &70105090744000 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.3.2
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70109260464820
35
+ version_requirements: *70105090744000
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: yard
38
- requirement: &70109260464280 !ruby/object:Gem::Requirement
38
+ requirement: &70105090743240 !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: :development
45
45
  prerelease: false
46
- version_requirements: *70109260464280
46
+ version_requirements: *70105090743240
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rdiscount
49
- requirement: &70109260463420 !ruby/object:Gem::Requirement
49
+ requirement: &70105090742340 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.6.8
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70109260463420
57
+ version_requirements: *70105090742340
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &70109260462240 !ruby/object:Gem::Requirement
60
+ requirement: &70105090741660 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.6.4
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70109260462240
68
+ version_requirements: *70105090741660
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: yui-compressor
71
- requirement: &70109260461600 !ruby/object:Gem::Requirement
71
+ requirement: &70105090740380 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.9.6
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70109260461600
79
+ version_requirements: *70105090740380
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: fssm
82
- requirement: &70109260460580 !ruby/object:Gem::Requirement
82
+ requirement: &70105090739480 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 0.2.7
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70109260460580
90
+ version_requirements: *70105090739480
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rb-fsevent
93
- requirement: &70109260459860 !ruby/object:Gem::Requirement
93
+ requirement: &70105090737600 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70109260459860
101
+ version_requirements: *70105090737600
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: coffee-script
104
- requirement: &70109260458840 !ruby/object:Gem::Requirement
104
+ requirement: &70105090735640 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,7 +109,7 @@ dependencies:
109
109
  version: 2.2.0
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70109260458840
112
+ version_requirements: *70105090735640
113
113
  description: Simple static asset packaging. Compresses files only when they're updated.
114
114
  email: tyson@tysontate.com
115
115
  executables:
@@ -127,13 +127,16 @@ files:
127
127
  - VERSION
128
128
  - bin/rapper_lite
129
129
  - lib/rapper_lite.rb
130
+ - lib/rapper_lite/build.rb
130
131
  - lib/rapper_lite/compressors.rb
131
132
  - lib/rapper_lite/config.rb
132
133
  - lib/rapper_lite/utils.rb
133
134
  - lib/rapper_lite/versioning.rb
135
+ - lib/rapper_lite/watch_support.rb
134
136
  - lib/tasks.rb
135
137
  - lib/yui/css_compressor.rb
136
138
  - rapper_lite.gemspec
139
+ - spec/fixtures/src/coffeescript.coffee
137
140
  - spec/fixtures/src/simple_1.css
138
141
  - spec/fixtures/src/simple_1.js
139
142
  - spec/fixtures/src/simple_2.css
@@ -220,7 +223,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
220
223
  version: '0'
221
224
  segments:
222
225
  - 0
223
- hash: 819027011091602425
226
+ hash: 3082783424749448526
224
227
  required_rubygems_version: !ruby/object:Gem::Requirement
225
228
  none: false
226
229
  requirements: