assette 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/.document +5 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +13 -0
  4. data/Gemfile.lock +36 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.rdoc +19 -0
  7. data/Rakefile +43 -0
  8. data/VERSION +1 -0
  9. data/assette.gemspec +113 -0
  10. data/examples/app/templates/foo/index.html.mustache +3 -0
  11. data/examples/config.ru +7 -0
  12. data/examples/defaults.rb +5 -0
  13. data/examples/defaults.yml +7 -0
  14. data/examples/public/images/test.pdf +0 -0
  15. data/examples/public/javascripts/foo.js +6 -0
  16. data/examples/public/javascripts/one.js +1 -0
  17. data/examples/public/javascripts/test.coffee +5 -0
  18. data/examples/public/javascripts/three.js +5 -0
  19. data/examples/public/javascripts/two.js +6 -0
  20. data/examples/public/stylesheets/one.css +1 -0
  21. data/examples/public/stylesheets/one1.sass +2 -0
  22. data/examples/public/stylesheets/two.css +7 -0
  23. data/examples/public/stylesheets/two2.scss +5 -0
  24. data/lib/assette.rb +24 -0
  25. data/lib/assette/compiled_file.rb +36 -0
  26. data/lib/assette/config.rb +35 -0
  27. data/lib/assette/file.rb +176 -0
  28. data/lib/assette/reader.rb +96 -0
  29. data/lib/assette/readers.rb +4 -0
  30. data/lib/assette/readers/coffee.rb +31 -0
  31. data/lib/assette/readers/css.rb +14 -0
  32. data/lib/assette/readers/js.rb +13 -0
  33. data/lib/assette/readers/sass.rb +18 -0
  34. data/lib/assette/readers/scss.rb +9 -0
  35. data/lib/assette/server.rb +83 -0
  36. data/lib/assette/template.rb +21 -0
  37. data/lib/assette/template_set.rb +76 -0
  38. data/spec/assette_spec.rb +5 -0
  39. data/spec/file_spec.rb +97 -0
  40. data/spec/reader_spec.rb +41 -0
  41. data/spec/spec_helper.rb +12 -0
  42. data/spec/template_spec.rb +43 -0
  43. metadata +249 -0
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile ADDED
@@ -0,0 +1,13 @@
1
+ source "http://rubygems.org"
2
+
3
+ group :development do
4
+ gem "rspec", "~> 2.4.0"
5
+ gem "yard", "~> 0.6.0"
6
+ gem "bundler", "~> 1.0.0"
7
+ gem "jeweler", "~> 1.5.2"
8
+ gem "rcov", ">= 0"
9
+ end
10
+
11
+ gem "json"
12
+ gem "haml"
13
+ gem "mime-types", ">= 1.16", :require => 'mime/types'
data/Gemfile.lock ADDED
@@ -0,0 +1,36 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ diff-lcs (1.1.2)
5
+ git (1.2.5)
6
+ haml (3.0.25)
7
+ jeweler (1.5.2)
8
+ bundler (~> 1.0.0)
9
+ git (>= 1.2.5)
10
+ rake
11
+ json (1.5.1)
12
+ mime-types (1.16)
13
+ rake (0.8.7)
14
+ rcov (0.9.9)
15
+ rspec (2.4.0)
16
+ rspec-core (~> 2.4.0)
17
+ rspec-expectations (~> 2.4.0)
18
+ rspec-mocks (~> 2.4.0)
19
+ rspec-core (2.4.0)
20
+ rspec-expectations (2.4.0)
21
+ diff-lcs (~> 1.1.2)
22
+ rspec-mocks (2.4.0)
23
+ yard (0.6.4)
24
+
25
+ PLATFORMS
26
+ ruby
27
+
28
+ DEPENDENCIES
29
+ bundler (~> 1.0.0)
30
+ haml
31
+ jeweler (~> 1.5.2)
32
+ json
33
+ mime-types (>= 1.16)
34
+ rcov
35
+ rspec (~> 2.4.0)
36
+ yard (~> 0.6.0)
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Tal Atlas
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,19 @@
1
+ = assette
2
+
3
+ Description goes here.
4
+
5
+ == Contributing to assette
6
+
7
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
8
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
9
+ * Fork the project
10
+ * Start a feature/bugfix branch
11
+ * Commit and push until you are happy with your contribution
12
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
13
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
14
+
15
+ == Copyright
16
+
17
+ Copyright (c) 2011 Tal Atlas. See LICENSE.txt for
18
+ further details.
19
+
data/Rakefile ADDED
@@ -0,0 +1,43 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'rake'
11
+
12
+ require 'jeweler'
13
+ Jeweler::Tasks.new do |gem|
14
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
15
+ gem.name = "assette"
16
+ gem.homepage = "http://github.com/Talby/assette"
17
+ gem.license = "MIT"
18
+ gem.summary = %Q{Asset manager thing}
19
+ gem.description = %Q{longer description of your gem}
20
+ gem.email = "me@tal.by"
21
+ gem.authors = ["Tal Atlas"]
22
+ # Include your dependencies below. Runtime dependencies are required when using your gem,
23
+ # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
24
+ gem.add_runtime_dependency 'mime-types', '>= 1.16'
25
+ # gem.add_development_dependency 'rspec', '> 1.2.3'
26
+ end
27
+ Jeweler::RubygemsDotOrgTasks.new
28
+
29
+ require 'rspec/core'
30
+ require 'rspec/core/rake_task'
31
+ RSpec::Core::RakeTask.new(:spec) do |spec|
32
+ spec.pattern = FileList['spec/**/*_spec.rb']
33
+ end
34
+
35
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
36
+ spec.pattern = 'spec/**/*_spec.rb'
37
+ spec.rcov = true
38
+ end
39
+
40
+ task :default => :spec
41
+
42
+ require 'yard'
43
+ YARD::Rake::YardocTask.new
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.0
data/assette.gemspec ADDED
@@ -0,0 +1,113 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{assette}
8
+ s.version = "0.0.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Tal Atlas"]
12
+ s.date = %q{2011-03-06}
13
+ s.description = %q{longer description of your gem}
14
+ s.email = %q{me@tal.by}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".rspec",
22
+ "Gemfile",
23
+ "Gemfile.lock",
24
+ "LICENSE.txt",
25
+ "README.rdoc",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "assette.gemspec",
29
+ "examples/app/templates/foo/index.html.mustache",
30
+ "examples/config.ru",
31
+ "examples/defaults.rb",
32
+ "examples/defaults.yml",
33
+ "examples/public/images/test.pdf",
34
+ "examples/public/javascripts/foo.js",
35
+ "examples/public/javascripts/one.js",
36
+ "examples/public/javascripts/test.coffee",
37
+ "examples/public/javascripts/three.js",
38
+ "examples/public/javascripts/two.js",
39
+ "examples/public/stylesheets/one.css",
40
+ "examples/public/stylesheets/one1.sass",
41
+ "examples/public/stylesheets/two.css",
42
+ "examples/public/stylesheets/two2.scss",
43
+ "lib/assette.rb",
44
+ "lib/assette/compiled_file.rb",
45
+ "lib/assette/config.rb",
46
+ "lib/assette/file.rb",
47
+ "lib/assette/reader.rb",
48
+ "lib/assette/readers.rb",
49
+ "lib/assette/readers/coffee.rb",
50
+ "lib/assette/readers/css.rb",
51
+ "lib/assette/readers/js.rb",
52
+ "lib/assette/readers/sass.rb",
53
+ "lib/assette/readers/scss.rb",
54
+ "lib/assette/server.rb",
55
+ "lib/assette/template.rb",
56
+ "lib/assette/template_set.rb",
57
+ "spec/assette_spec.rb",
58
+ "spec/file_spec.rb",
59
+ "spec/reader_spec.rb",
60
+ "spec/spec_helper.rb",
61
+ "spec/template_spec.rb"
62
+ ]
63
+ s.homepage = %q{http://github.com/Talby/assette}
64
+ s.licenses = ["MIT"]
65
+ s.require_paths = ["lib"]
66
+ s.rubygems_version = %q{1.5.0}
67
+ s.summary = %q{Asset manager thing}
68
+ s.test_files = [
69
+ "examples/defaults.rb",
70
+ "spec/assette_spec.rb",
71
+ "spec/file_spec.rb",
72
+ "spec/reader_spec.rb",
73
+ "spec/spec_helper.rb",
74
+ "spec/template_spec.rb"
75
+ ]
76
+
77
+ if s.respond_to? :specification_version then
78
+ s.specification_version = 3
79
+
80
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
81
+ s.add_runtime_dependency(%q<json>, [">= 0"])
82
+ s.add_runtime_dependency(%q<haml>, [">= 0"])
83
+ s.add_runtime_dependency(%q<mime-types>, [">= 1.16"])
84
+ s.add_development_dependency(%q<rspec>, ["~> 2.4.0"])
85
+ s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
86
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
87
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
88
+ s.add_development_dependency(%q<rcov>, [">= 0"])
89
+ s.add_runtime_dependency(%q<mime-types>, [">= 1.16"])
90
+ else
91
+ s.add_dependency(%q<json>, [">= 0"])
92
+ s.add_dependency(%q<haml>, [">= 0"])
93
+ s.add_dependency(%q<mime-types>, [">= 1.16"])
94
+ s.add_dependency(%q<rspec>, ["~> 2.4.0"])
95
+ s.add_dependency(%q<yard>, ["~> 0.6.0"])
96
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
97
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
98
+ s.add_dependency(%q<rcov>, [">= 0"])
99
+ s.add_dependency(%q<mime-types>, [">= 1.16"])
100
+ end
101
+ else
102
+ s.add_dependency(%q<json>, [">= 0"])
103
+ s.add_dependency(%q<haml>, [">= 0"])
104
+ s.add_dependency(%q<mime-types>, [">= 1.16"])
105
+ s.add_dependency(%q<rspec>, ["~> 2.4.0"])
106
+ s.add_dependency(%q<yard>, ["~> 0.6.0"])
107
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
108
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
109
+ s.add_dependency(%q<rcov>, [">= 0"])
110
+ s.add_dependency(%q<mime-types>, [">= 1.16"])
111
+ end
112
+ end
113
+
@@ -0,0 +1,3 @@
1
+ <div>
2
+ {{foo}}
3
+ </div>
@@ -0,0 +1,7 @@
1
+ $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+
3
+ require 'rubygems'
4
+ require 'assette'
5
+ require 'assette/server'
6
+
7
+ run Assette::Server
@@ -0,0 +1,5 @@
1
+ file_path 'public'
2
+
3
+ after_compile do
4
+
5
+ end
@@ -0,0 +1,7 @@
1
+ file_paths:
2
+ - public
3
+
4
+ asset_path: '{asdfasdf}'
5
+
6
+ template_format: 'AT.one.two.t[{*path*}] = {*template*};'
7
+ templates_path: app/templates
Binary file
@@ -0,0 +1,6 @@
1
+ // ASSETTE CONFIG
2
+ // @require one.js
3
+ // @require two.js
4
+ // /ASSETTE CONFIG
5
+
6
+ window.foo = 'foo';
@@ -0,0 +1 @@
1
+ window.one = 1;
@@ -0,0 +1,5 @@
1
+ # ASSETTE CONFIG
2
+ # @require one.js
3
+ # /ASSETTE CONFIG
4
+
5
+ test = 'test'
@@ -0,0 +1,5 @@
1
+ // ASSETTE CONFIG
2
+ // @require two.js
3
+ // /ASSETTE CONFIG
4
+
5
+ window.three = 3;
@@ -0,0 +1,6 @@
1
+ // ASSETTE CONFIG
2
+ // @require one.js
3
+ // @template all
4
+ // /ASSETTE CONFIG
5
+
6
+ window.two = 2;
@@ -0,0 +1 @@
1
+ #one {}
@@ -0,0 +1,2 @@
1
+ #one
2
+ width: 400px + 400px
@@ -0,0 +1,7 @@
1
+ /*
2
+ * ASSETTE CONFIG
3
+ * @require one.css
4
+ * /ASSETTE CONFIG
5
+ */
6
+
7
+ #two {}
@@ -0,0 +1,5 @@
1
+ @import "one1.sass";
2
+
3
+ #two {
4
+ width: 800px*3
5
+ }
data/lib/assette.rb ADDED
@@ -0,0 +1,24 @@
1
+ require 'json'
2
+ require 'forwardable'
3
+ require 'mime/types'
4
+
5
+ coffee_type = MIME::Type.new('text/coffeescript') do |t|
6
+ t.encoding = '8bit'
7
+ t.extensions = %w{coffee}
8
+ end
9
+
10
+ sass_type = MIME::Type.new('text/sass') do |t|
11
+ t.encoding = '8bit'
12
+ t.extensions = %w{sass scss}
13
+ end
14
+
15
+ MIME::Types.add coffee_type, sass_type
16
+
17
+ module Assette
18
+ extend self
19
+ CONFIG_WRAPPER = 'ASSETTE CONFIG'
20
+ end
21
+
22
+ %w{config reader readers compiled_file file template_set template}.each do |f|
23
+ require File.dirname(__FILE__)+'/assette/'+f
24
+ end
@@ -0,0 +1,36 @@
1
+ module Assette
2
+ class CompiledFile < Array
3
+ attr_reader :file
4
+
5
+ def initialize(file)
6
+ @file = file
7
+ end
8
+
9
+ def add_dependency d
10
+ c = []
11
+ c << "\n"
12
+ c << file.comment_str % "Start: #{d.path}"
13
+ c << d.code
14
+ c << file.comment_str % "End: #{d.path}"
15
+ self << c.join("\n")
16
+ end
17
+
18
+ def content_type
19
+ return mime_type.content_type if mime_type
20
+
21
+ case file.target_class.outputs
22
+ when :js
23
+ 'text/javascript'
24
+ when :css
25
+ 'text/css'
26
+ else
27
+ 'text/plain'
28
+ end
29
+ end
30
+
31
+ def mime_type
32
+ file.target_class.mime_type
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,35 @@
1
+ require 'yaml'
2
+
3
+ module Assette
4
+ attr_accessor :config
5
+
6
+ class Config
7
+ OPTIONS = [
8
+ :file_paths, :asset_path, :templates_path, :template_format
9
+ ]
10
+ attr_reader *OPTIONS
11
+
12
+ def initialize args = {}
13
+ args.each do |k,v|
14
+ instance_variable_set "@#{k}", v.dup.freeze
15
+ end
16
+ end
17
+
18
+ class << self
19
+
20
+ def load p
21
+ new YAML.load_file(p)
22
+ end
23
+
24
+ end
25
+
26
+ end
27
+
28
+ end
29
+
30
+ f = %w{assets.yml config/assets.yml}
31
+ f << File.join( File.dirname(__FILE__), '..', '..', 'examples', 'defaults.yml' )
32
+
33
+ p = f.find { |path| File.exist?(path) }
34
+
35
+ Assette.config = Assette::Config.load(p)