assette 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -11,7 +11,7 @@ end
11
11
  gem "rack", '~> 1'
12
12
  gem "thor", '~> 0'
13
13
  gem "json", '>= 1.4'
14
- gem "haml", '~> 3'
14
+ gem "sass", '>= 3.1'
15
15
  gem "mime-types", ">= 1.16", :require => 'mime/types'
16
16
  gem "git"
17
17
  gem "coffee-script", "~> 2"
data/Gemfile.lock CHANGED
@@ -8,7 +8,6 @@ GEM
8
8
  diff-lcs (1.1.2)
9
9
  execjs (0.1.0)
10
10
  git (1.2.5)
11
- haml (3.0.25)
12
11
  jeweler (1.5.2)
13
12
  bundler (~> 1.0.0)
14
13
  git (>= 1.2.5)
@@ -26,6 +25,7 @@ GEM
26
25
  rspec-expectations (2.4.0)
27
26
  diff-lcs (~> 1.1.2)
28
27
  rspec-mocks (2.4.0)
28
+ sass (3.1.1)
29
29
  thor (0.14.6)
30
30
  yard (0.6.4)
31
31
 
@@ -36,12 +36,12 @@ DEPENDENCIES
36
36
  bundler (~> 1.0.0)
37
37
  coffee-script (~> 2)
38
38
  git
39
- haml (~> 3)
40
39
  jeweler (~> 1.5.2)
41
40
  json (>= 1.4)
42
41
  mime-types (>= 1.16)
43
42
  rack (~> 1)
44
43
  rcov
45
44
  rspec (~> 2.4.0)
45
+ sass (>= 3.1)
46
46
  thor (~> 0)
47
47
  yard (~> 0.6.0)
data/Rakefile CHANGED
@@ -24,7 +24,7 @@ Jeweler::Tasks.new do |gem|
24
24
  gem.add_runtime_dependency "rack", '~> 1'
25
25
  gem.add_runtime_dependency "thor", '~> 0'
26
26
  gem.add_runtime_dependency "json", '>= 1.4'
27
- gem.add_runtime_dependency "haml", '~> 3'
27
+ gem.add_runtime_dependency "sass", '>= 3.1'
28
28
  gem.add_runtime_dependency "coffee-script", '~> 2'
29
29
  # gem.add_runtime_dependency "git"
30
30
  gem.add_runtime_dependency "mime-types", ">= 1.16"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
data/assette.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{assette}
8
- s.version = "0.0.1"
8
+ s.version = "0.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Tal Atlas"]
12
- s.date = %q{2011-03-28}
12
+ s.date = %q{2011-05-07}
13
13
  s.default_executable = %q{assette}
14
14
  s.description = %q{Renders all asset types (coffeescript/sass/scss) as equals}
15
15
  s.email = %q{me@tal.by}
@@ -48,6 +48,7 @@ Gem::Specification.new do |s|
48
48
  "lib/assette/compiled_file.rb",
49
49
  "lib/assette/config.rb",
50
50
  "lib/assette/file.rb",
51
+ "lib/assette/middleware.rb",
51
52
  "lib/assette/post_processor.rb",
52
53
  "lib/assette/post_processors.rb",
53
54
  "lib/assette/post_processors/cache_buster.rb",
@@ -74,7 +75,7 @@ Gem::Specification.new do |s|
74
75
  s.homepage = %q{http://github.com/Talby/assette}
75
76
  s.licenses = ["MIT"]
76
77
  s.require_paths = ["lib"]
77
- s.rubygems_version = %q{1.5.2}
78
+ s.rubygems_version = %q{1.5.0}
78
79
  s.summary = %q{Treat all assets as equal}
79
80
  s.test_files = [
80
81
  "examples/config/assets.rb",
@@ -95,7 +96,7 @@ Gem::Specification.new do |s|
95
96
  s.add_runtime_dependency(%q<rack>, ["~> 1"])
96
97
  s.add_runtime_dependency(%q<thor>, ["~> 0"])
97
98
  s.add_runtime_dependency(%q<json>, [">= 1.4"])
98
- s.add_runtime_dependency(%q<haml>, ["~> 3"])
99
+ s.add_runtime_dependency(%q<sass>, [">= 3.1"])
99
100
  s.add_runtime_dependency(%q<mime-types>, [">= 1.16"])
100
101
  s.add_runtime_dependency(%q<git>, [">= 0"])
101
102
  s.add_runtime_dependency(%q<coffee-script>, ["~> 2"])
@@ -107,14 +108,14 @@ Gem::Specification.new do |s|
107
108
  s.add_runtime_dependency(%q<rack>, ["~> 1"])
108
109
  s.add_runtime_dependency(%q<thor>, ["~> 0"])
109
110
  s.add_runtime_dependency(%q<json>, [">= 1.4"])
110
- s.add_runtime_dependency(%q<haml>, ["~> 3"])
111
+ s.add_runtime_dependency(%q<sass>, [">= 3.1"])
111
112
  s.add_runtime_dependency(%q<coffee-script>, ["~> 2"])
112
113
  s.add_runtime_dependency(%q<mime-types>, [">= 1.16"])
113
114
  else
114
115
  s.add_dependency(%q<rack>, ["~> 1"])
115
116
  s.add_dependency(%q<thor>, ["~> 0"])
116
117
  s.add_dependency(%q<json>, [">= 1.4"])
117
- s.add_dependency(%q<haml>, ["~> 3"])
118
+ s.add_dependency(%q<sass>, [">= 3.1"])
118
119
  s.add_dependency(%q<mime-types>, [">= 1.16"])
119
120
  s.add_dependency(%q<git>, [">= 0"])
120
121
  s.add_dependency(%q<coffee-script>, ["~> 2"])
@@ -126,7 +127,7 @@ Gem::Specification.new do |s|
126
127
  s.add_dependency(%q<rack>, ["~> 1"])
127
128
  s.add_dependency(%q<thor>, ["~> 0"])
128
129
  s.add_dependency(%q<json>, [">= 1.4"])
129
- s.add_dependency(%q<haml>, ["~> 3"])
130
+ s.add_dependency(%q<sass>, [">= 3.1"])
130
131
  s.add_dependency(%q<coffee-script>, ["~> 2"])
131
132
  s.add_dependency(%q<mime-types>, [">= 1.16"])
132
133
  end
@@ -134,7 +135,7 @@ Gem::Specification.new do |s|
134
135
  s.add_dependency(%q<rack>, ["~> 1"])
135
136
  s.add_dependency(%q<thor>, ["~> 0"])
136
137
  s.add_dependency(%q<json>, [">= 1.4"])
137
- s.add_dependency(%q<haml>, ["~> 3"])
138
+ s.add_dependency(%q<sass>, [">= 3.1"])
138
139
  s.add_dependency(%q<mime-types>, [">= 1.16"])
139
140
  s.add_dependency(%q<git>, [">= 0"])
140
141
  s.add_dependency(%q<coffee-script>, ["~> 2"])
@@ -146,7 +147,7 @@ Gem::Specification.new do |s|
146
147
  s.add_dependency(%q<rack>, ["~> 1"])
147
148
  s.add_dependency(%q<thor>, ["~> 0"])
148
149
  s.add_dependency(%q<json>, [">= 1.4"])
149
- s.add_dependency(%q<haml>, ["~> 3"])
150
+ s.add_dependency(%q<sass>, [">= 3.1"])
150
151
  s.add_dependency(%q<coffee-script>, ["~> 2"])
151
152
  s.add_dependency(%q<mime-types>, [">= 1.16"])
152
153
  end
data/bin/assette CHANGED
File without changes
data/lib/assette/cli.rb CHANGED
@@ -65,6 +65,12 @@ module Assette
65
65
 
66
66
  opts[:daemonize] = true
67
67
  opts[:pid] = pid_file
68
+ else
69
+ Assette.logger.level = Logger::DEBUG
70
+ Assette.logger.datetime_format = "%H:%M:%S"
71
+ Assette.logger.formatter = Proc.new do |severity, datetime, progname, msg|
72
+ "#{severity}: #{progname} - #{msg}\n"
73
+ end
68
74
  end
69
75
 
70
76
  say "Starting Assette server on port #{opts[:Port]}"
@@ -6,7 +6,7 @@ module Assette
6
6
  f.unshift(optional_path.to_s) if optional_path
7
7
 
8
8
  p = f.find { |path| File.exist?(path) }
9
-
9
+ raise "Can't find config file" unless p
10
10
  @config = Assette::Config.load(p)
11
11
  end
12
12
 
data/lib/assette/file.rb CHANGED
@@ -41,6 +41,8 @@ class Assette::File < ::File
41
41
 
42
42
  def code
43
43
  reader_class.new(self).compile
44
+ rescue => e
45
+ target_class.error(e.to_s,path)
44
46
  end
45
47
 
46
48
  def all_code_array
@@ -68,7 +70,16 @@ class Assette::File < ::File
68
70
  end
69
71
 
70
72
  def target_path
71
- File.join(dirname,filename.gsub(reader_class.extension,target_class.extension))
73
+ File.expand_path(File.join(dirname,filename.gsub(reader_class.extension,target_class.extension)))
74
+ end
75
+
76
+ def relative_target_path
77
+ tp = target_path
78
+ Assette.config.file_paths.each do |fp|
79
+ f = File.expand_path(fp)
80
+ tp.gsub! f, ''
81
+ end
82
+ tp
72
83
  end
73
84
 
74
85
  def filename
@@ -102,9 +113,12 @@ class Assette::File < ::File
102
113
 
103
114
  p = ::File.expand_path(::File.join(dirname,m[1]))
104
115
 
116
+ Assette.logger.info("Dependecy Checking") {p}
117
+
105
118
  # Check for _filename if filename doesn't exist
106
119
  unless ::File.exist?(p)
107
120
  p2 = p.gsub /(.*\/)?(.+)/, '\1_\2'
121
+ Assette.logger.info("Dependecy Checking") {p2}
108
122
  if ::File.exist?(p2)
109
123
  p = p2
110
124
  else
@@ -121,6 +135,8 @@ class Assette::File < ::File
121
135
 
122
136
  end
123
137
 
138
+ Assette.logger.debug('Dependencies') {"For: #{path}\n#{@dependencies.pretty_inspect}"}
139
+
124
140
  @dependencies
125
141
  end
126
142
 
@@ -166,13 +182,35 @@ class Assette::File < ::File
166
182
  code << f.comment_str % "Time taken to generate: #{Time.now-start}s"
167
183
  end
168
184
 
169
- def rack_resp_if_exists path
185
+ def rack_resp_if_exists path, opts = {}
170
186
  return unless File.exist?(path)
171
187
  start = Time.now
172
188
  f = open(path)
173
- code = f.all_code_array
189
+
190
+ if opts[:deparr]
191
+ code = f.dependencies.collect do |d|
192
+ d.relative_target_path
193
+ end
194
+
195
+ code << f.relative_target_path
196
+
197
+ resp = {:dependencies => code, :target_type => f.target_class.mime_type, :target_extension => f.extension}
198
+
199
+ return [200,{"Content-Type" => 'text/javascript'}, [resp.to_json]]
200
+ end
201
+
202
+ if opts[:nodep]
203
+ code = [f.code]
204
+ type = f.target_class.mime_type
205
+ else
206
+ code = f.all_code_array
207
+ type = f.target_class.mime_type
208
+ end
209
+
174
210
  code << "\n"
175
211
  code << f.comment_str % "Time taken to generate: #{Time.now-start}s"
212
+
213
+ [200,{"Content-Type" => type.content_type},code]
176
214
  end
177
215
 
178
216
  end
@@ -0,0 +1,22 @@
1
+ require 'assette/server'
2
+
3
+ module Assette
4
+ class Middleware
5
+ def initialize(app, *args)
6
+ @app = app
7
+ end
8
+
9
+ def call(env)
10
+ if env['PATH_INFO'] == '/'
11
+ return @app.call(env)
12
+ end
13
+
14
+ assette_resp = Assette::Server.call(env)
15
+ if assette_resp[0] == 200
16
+ assette_resp
17
+ else
18
+ @app.call(env)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -6,6 +6,25 @@ class Assette::Reader::Css < Assette::Reader(:css)
6
6
 
7
7
  class << self
8
8
 
9
+ def error str, stack = nil
10
+ <<-CSS
11
+ body:before {
12
+ position: absolute;
13
+ top: 0px;
14
+ padding: 10px;
15
+ font-size: 18px;
16
+ text-align: center;
17
+ width: 100%;
18
+ display: block;
19
+ content: #{str.inspect};
20
+ background-color: #992E40;
21
+ color: white;
22
+ font-weight:bold;
23
+ z-index: 9999;
24
+ }
25
+ CSS
26
+ end
27
+
9
28
  def comment_str
10
29
  '/* %s */'
11
30
  end
@@ -6,6 +6,18 @@ class Assette::Reader::Js < Assette::Reader(:js)
6
6
 
7
7
  class << self
8
8
 
9
+ def error str, path=nil
10
+ if path
11
+ <<-JS
12
+ console.group("Compiling Error in file #{path}");
13
+ console.error(#{str.to_json});
14
+ console.groupEnd();
15
+ JS
16
+ else
17
+ "console.error(#{str.to_json});"
18
+ end
19
+ end
20
+
9
21
  def comment_str
10
22
  '// %s'
11
23
  end
@@ -1,5 +1,5 @@
1
- require 'haml'
2
1
  require 'sass'
2
+
3
3
  class Assette::Reader::Sass < Assette::Reader(:css)
4
4
 
5
5
  def compile
@@ -14,4 +14,4 @@ private
14
14
  :load_paths => [File.expand_path(@file.dirname)]|Assette.config.file_paths
15
15
  }
16
16
  end
17
- end
17
+ end
@@ -6,6 +6,19 @@ module Assette
6
6
  @env = env
7
7
  @path = env["PATH_INFO"]
8
8
 
9
+ @params = env["QUERY_STRING"].split('&').inject({}) do |resp,v|
10
+ k,v = v.split('=')
11
+
12
+ if v == '1' || v.nil?
13
+ v = true
14
+ elsif v == '0'
15
+ v = false
16
+ end
17
+
18
+ resp[k.to_sym] = v
19
+ resp
20
+ end
21
+
9
22
  # Assette.config.asset_path
10
23
  end
11
24
 
@@ -14,18 +27,21 @@ module Assette
14
27
  Assette.config.file_paths.each do |p|
15
28
 
16
29
  Assette::Reader.possible_targets(File.join(p,path)).each do |pp|
17
- f = Assette::File.rack_resp_if_exists( pp )
30
+ Assette.logger.debug('Checking for compiled file') {pp}
31
+ f = Assette::File.rack_resp_if_exists( pp, @params )
32
+ Assette.logger.info("Found File") {"Compiled file at #{pp}"} if f
18
33
  break if f
19
34
  end
20
35
 
21
36
  break if f
22
37
  end
38
+
23
39
  f
24
40
  end
25
41
 
26
42
  def path_extension
27
43
  m = path.match(/\.(\w+)$/)
28
- m[1] if m
44
+ m ? m[1] : :none
29
45
  end
30
46
 
31
47
  def has_registered_reader?
@@ -47,6 +63,7 @@ module Assette
47
63
  new_path = File.join(p,path)
48
64
  if File.exist?(new_path)
49
65
  new_path = File.join(Dir.pwd,new_path)
66
+ Assette.logger.info("Found File") {"Raw file at #{new_path}"}
50
67
  f = Rack::File.new(p).call(@env)
51
68
  end
52
69
 
@@ -58,7 +75,7 @@ module Assette
58
75
 
59
76
  def rack_resp
60
77
  if has_registered_reader? && (f = find_compiled_file)
61
- [200,{"Content-Type" => f.content_type},f]
78
+ f
62
79
  elsif f = find_file
63
80
  f
64
81
  else
data/lib/assette.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require 'json'
2
2
  require 'forwardable'
3
3
  require 'mime/types'
4
+ require 'logger'
5
+ require 'pp'
4
6
 
5
7
  coffee_type = MIME::Type.new('text/coffeescript') do |t|
6
8
  t.encoding = '8bit'
@@ -18,6 +20,14 @@ module Assette
18
20
  extend self
19
21
  CONFIG_WRAPPER = 'ASSETTE CONFIG'
20
22
  VERSION = File.open(File.expand_path(File.dirname(__FILE__)+'/../VERSION')).read
23
+
24
+ def logger
25
+ @logger ||= Logger.new(STDOUT)
26
+ end
27
+
28
+ def logger=(l)
29
+ @logger = l
30
+ end
21
31
  end
22
32
 
23
33
  %w{config reader readers post_processor post_processors
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: assette
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tal Atlas
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-28 00:00:00 -04:00
18
+ date: 2011-05-07 00:00:00 -04:00
19
19
  default_executable: assette
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -62,16 +62,17 @@ dependencies:
62
62
  type: :runtime
63
63
  requirement: *id003
64
64
  - !ruby/object:Gem::Dependency
65
- name: haml
65
+ name: sass
66
66
  version_requirements: &id004 !ruby/object:Gem::Requirement
67
67
  none: false
68
68
  requirements:
69
- - - ~>
69
+ - - ">="
70
70
  - !ruby/object:Gem::Version
71
71
  hash: 5
72
72
  segments:
73
73
  - 3
74
- version: "3"
74
+ - 1
75
+ version: "3.1"
75
76
  prerelease: false
76
77
  type: :runtime
77
78
  requirement: *id004
@@ -240,16 +241,17 @@ dependencies:
240
241
  type: :runtime
241
242
  requirement: *id015
242
243
  - !ruby/object:Gem::Dependency
243
- name: haml
244
+ name: sass
244
245
  version_requirements: &id016 !ruby/object:Gem::Requirement
245
246
  none: false
246
247
  requirements:
247
- - - ~>
248
+ - - ">="
248
249
  - !ruby/object:Gem::Version
249
250
  hash: 5
250
251
  segments:
251
252
  - 3
252
- version: "3"
253
+ - 1
254
+ version: "3.1"
253
255
  prerelease: false
254
256
  type: :runtime
255
257
  requirement: *id016
@@ -321,6 +323,7 @@ files:
321
323
  - lib/assette/compiled_file.rb
322
324
  - lib/assette/config.rb
323
325
  - lib/assette/file.rb
326
+ - lib/assette/middleware.rb
324
327
  - lib/assette/post_processor.rb
325
328
  - lib/assette/post_processors.rb
326
329
  - lib/assette/post_processors/cache_buster.rb
@@ -373,7 +376,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
373
376
  requirements: []
374
377
 
375
378
  rubyforge_project:
376
- rubygems_version: 1.5.2
379
+ rubygems_version: 1.5.0
377
380
  signing_key:
378
381
  specification_version: 3
379
382
  summary: Treat all assets as equal