vitrine 0.0.18 → 0.0.19

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dc4ee8209933285451897b7e350f08d688415809
4
- data.tar.gz: ee63f9d1f096126084c62426139533431c5a474e
3
+ metadata.gz: d4e9452a9802c22e3cd800ed12520dcfa01e0a15
4
+ data.tar.gz: 35f02e34fca96a5284d39aecdaca1e7667461da2
5
5
  SHA512:
6
- metadata.gz: 14101114ebe8d809b452a2424b19833335498949cb39ed280377854f6fa06e8051c9d1c089f5fbc774aec7b1c89e8dbf9c4fc088f4c0f20799f4414b42c8e174
7
- data.tar.gz: 65ccc5b3cf467b38a8ad86ba5d2f48bf9e6e89aed72345e60311162ef6ca39246fb4d8150561899be080f0e6f431ac055a8bd3cd0d489b9ae6d808349ac1a50f
6
+ metadata.gz: 0e0cfdf1366282057c2d42dbe33843978f124df3c521a92aa44b33277af3825163b108a742f1db7448d77f632772213f2e7902e6c720dcefb6ecc52bb6bd5156
7
+ data.tar.gz: 9a810b28d393939b931ae6df6d019a8dc283764ca6334e62bb2a22151eee20c091c6fec2a4b8402be857039ac6951eb620e42ba99cd4a2882243d6468ef070c4
data/Gemfile CHANGED
@@ -2,18 +2,20 @@ source "http://rubygems.org"
2
2
 
3
3
  gem 'sinatra', '~> 1.4', require: 'sinatra/base'
4
4
  gem 'coffee-script', '~> 2.2'
5
- gem 'sass', '3.3.0.rc.2'
5
+ gem 'sass', '~> 3'
6
6
  gem 'rack-contrib'
7
7
  gem 'rack-livereload'
8
8
 
9
9
  # Add dependencies to develop your gem here.
10
10
  # Include everything needed to run rake, tests, features, etc.
11
11
  group :development do
12
+ gem 'guard', '~> 2.2'
13
+ gem 'guard-livereload'
14
+ gem 'guard-test'
15
+
12
16
  gem "rdoc", "~> 3.12"
13
- gem "bundler", "~> 1.0"
14
17
  gem "jeweler", "~> 1.8.7"
15
18
  gem 'rack-test'
16
- gem 'guard-test'
17
19
  gem 'minitest'
18
20
  gem 'pry'
19
21
  end
@@ -27,41 +27,30 @@ class Vitrine::AssetCompiler < Sinatra::Base
27
27
  attr_accessor :public_dir
28
28
 
29
29
  # Try to find SCSS replacement for missing CSS
30
- get /(.+)\.css$/ do | basename |
31
- # Return vanilla CSS
32
- if File.exist?(File.join(get_public, basename + '.css'))
33
- return send_file(File.join(get_public, basename + '.css'))
34
- end
35
-
30
+ get /(.+)\.css/ do | basename |
36
31
  begin
37
32
  # TODO: handle .sass ext as well
38
33
  scss_source_path = File.join(get_public, "#{basename}.scss")
39
34
  mtime_cache(scss_source_path)
40
35
  content_type 'text/css', :charset => 'utf-8'
41
- Vitrine.compile_sass(scss_source_path, get_public)
36
+
37
+ # TODO: Examine http://sass-lang.com/documentation/file.SASS_REFERENCE.html
38
+ # It already has provisions for error display, among other things
39
+ Sass.compile_file(scss_source_path, cache_location: '/tmp/vitrine/sass-cache')
42
40
  rescue Errno::ENOENT # Missing SCSS
43
41
  forward_or_halt "No such CSS or SCSS file found"
44
42
  rescue Exception => e # CSS syntax error or something alike
45
- # Add a generated DOM element before <body/> to inject
46
- # a visible error message
47
- error_tpl = 'body:before {
48
- background: white; padding: 3px; font-family: monospaced; color: red;
49
- font-size: 14px; content: %s }'
50
- css_message = error_tpl % [e.class, "\n", "--> ", e.message].join.inspect
51
- # If we halt with 500 this will not be shown as CSS
52
- halt 200, css_message
43
+ # Add a generated DOM element before <body/> to inject
44
+ # a visible error message
45
+ error_tpl = 'body:before {
46
+ background: white; padding: 3px; font-family: monospaced; color: red;
47
+ font-size: 14px; content: %s }'
48
+ css_message = error_tpl % [e.class, "\n", "--> ", e.message].join.inspect
49
+ # If we halt with 500 this will not be shown as CSS
50
+ halt 200, css_message
53
51
  end
54
52
  end
55
53
 
56
- # Try to find SCSS replacement for missing CSS
57
- get /(.+)\.css\.map$/ do | basename |
58
- # TODO: handle .sass ext as well
59
- scss_source_path = File.join(get_public, "#{basename}.scss")
60
- mtime_cache(scss_source_path)
61
- content_type 'application/json', :charset => 'utf-8'
62
- Vitrine.compile_sass_source_map(scss_source_path, get_public)
63
- end
64
-
65
54
  # Generate a sourcemap for CoffeeScript files
66
55
  get /(.+)\.js\.map$/ do | basename |
67
56
  begin
data/lib/sourcemaps.rb CHANGED
@@ -3,49 +3,6 @@ require 'json'
3
3
 
4
4
  module Vitrine
5
5
 
6
- # We need to override the Sass importer
7
- # so that it gives us URLs relative to the server root for sourcemaps
8
- class Imp < Sass::Importers::Filesystem
9
- def public_url(of_filesystem_path)
10
- scss_uri = '/' + Pathname.new(of_filesystem_path).relative_path_from(Pathname.new(root)).to_s
11
- end
12
- end
13
-
14
- # Compile a SASS/SCSS file to CSS
15
- def self.compile_sass_and_sourcemap(scss_path, public_folder_path)
16
- # Compute the paths relative to the webserver public root
17
- scss_uri = '/' + Pathname.new(scss_path).relative_path_from(Pathname.new(public_folder_path)).to_s
18
- css_uri = scss_uri.gsub(/\.scss$/, '.css')
19
- sourcemap_uri= css_uri + '.map'
20
-
21
- engine_opts = {importer: Imp.new(public_folder_path), sourcemap: true, cache: false}
22
- map_options = {css_path: css_uri, sourcemap_path: sourcemap_uri }
23
-
24
- engine = Sass::Engine.for_file(scss_path, engine_opts)
25
-
26
- # Determine the sourcemap URL for the SASS file
27
- rendered, mapping = engine.render_with_sourcemap(sourcemap_uri)
28
-
29
- # Serialize the sourcemap
30
- # We need to pass css_uri: so that the generated sourcemap refers to the
31
- # file that can be pulled of the server as opposed to a file on the filesystem
32
- sourcemap_body = mapping.to_json(map_options)
33
-
34
- [rendered, sourcemap_body]
35
- end
36
-
37
- # Compile SASS and return the source map only
38
- def self.compile_sass_source_map(scss_path, public_folder_path)
39
- css, map = compile_sass_and_sourcemap(scss_path, public_folder_path)
40
- map
41
- end
42
-
43
- # Compiles SASS and it's sourcemap and returns the CSS only
44
- def self.compile_sass(scss_path, public_folder_path)
45
- css, map = compile_sass_and_sourcemap(scss_path, public_folder_path)
46
- css
47
- end
48
-
49
6
  # Compile a script (String or IO) to JavaScript.
50
7
  # This is a version lifted from here
51
8
  # https://github.com/josh/ruby-coffee-script/blob/114b65b638f66ba04b60bf9c24b54360260f9898/lib/coffee_script.rb
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Vitrine
2
- VERSION = '0.0.18'
2
+ VERSION = '0.0.19'
3
3
  end
@@ -69,29 +69,17 @@ class TestVitrineAssetCompiler < Test::Unit::TestCase
69
69
  end
70
70
 
71
71
  def test_compiles_scss_when_requested_as_css
72
- write_public '/les-styles-rococo/styles.scss' do | f |
72
+ write_public 'styles.scss' do | f |
73
73
  f.puts '.foo {'
74
74
  f.puts '.bar { font-size: 10px; }'
75
75
  f.puts '}'
76
76
  end
77
77
 
78
- get '/les-styles-rococo/styles.css'
78
+ get '/styles.css'
79
79
 
80
80
  assert last_response.ok?
81
81
  assert_not_nil last_response.headers['ETag'], 'Should set ETag for the compiled version'
82
- assert_include last_response.body, '.foo .bar {'
83
- assert_include last_response.body, '*# sourceMappingURL=/les-styles-rococo/styles.css.map */'
84
-
85
- get '/les-styles-rococo/styles.css.map'
86
-
87
- assert last_response.ok?
88
- assert_equal "application/json;charset=utf-8", last_response.content_type
89
- resp = {"version"=> 3,
90
- "mappings"=> "AACA,SAAK;EAAE,SAAS,EAAE,IAAI",
91
- "sources"=> ["/les-styles-rococo/styles.scss"],
92
- "file" => "styles.css"
93
- }
94
- assert_equal resp, JSON.parse(last_response.body)
82
+ assert last_response.body.include?('.foo .bar {'), 'Should have compiled the CSS rule'
95
83
  end
96
84
 
97
85
  def test_displays_decent_alerts_for_scss_errors
data/vitrine.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "vitrine"
8
- s.version = "0.0.18"
8
+ s.version = "0.0.19"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Julik Tarkhanov"]
@@ -49,41 +49,44 @@ Gem::Specification.new do |s|
49
49
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
50
50
  s.add_runtime_dependency(%q<sinatra>, ["~> 1.4"])
51
51
  s.add_runtime_dependency(%q<coffee-script>, ["~> 2.2"])
52
- s.add_runtime_dependency(%q<sass>, ["= 3.3.0.rc.2"])
52
+ s.add_runtime_dependency(%q<sass>, ["~> 3"])
53
53
  s.add_runtime_dependency(%q<rack-contrib>, [">= 0"])
54
54
  s.add_runtime_dependency(%q<rack-livereload>, [">= 0"])
55
+ s.add_development_dependency(%q<guard>, ["~> 2.2"])
56
+ s.add_development_dependency(%q<guard-livereload>, [">= 0"])
57
+ s.add_development_dependency(%q<guard-test>, [">= 0"])
55
58
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
56
- s.add_development_dependency(%q<bundler>, ["~> 1.0"])
57
59
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.7"])
58
60
  s.add_development_dependency(%q<rack-test>, [">= 0"])
59
- s.add_development_dependency(%q<guard-test>, [">= 0"])
60
61
  s.add_development_dependency(%q<minitest>, [">= 0"])
61
62
  s.add_development_dependency(%q<pry>, [">= 0"])
62
63
  else
63
64
  s.add_dependency(%q<sinatra>, ["~> 1.4"])
64
65
  s.add_dependency(%q<coffee-script>, ["~> 2.2"])
65
- s.add_dependency(%q<sass>, ["= 3.3.0.rc.2"])
66
+ s.add_dependency(%q<sass>, ["~> 3"])
66
67
  s.add_dependency(%q<rack-contrib>, [">= 0"])
67
68
  s.add_dependency(%q<rack-livereload>, [">= 0"])
69
+ s.add_dependency(%q<guard>, ["~> 2.2"])
70
+ s.add_dependency(%q<guard-livereload>, [">= 0"])
71
+ s.add_dependency(%q<guard-test>, [">= 0"])
68
72
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
69
- s.add_dependency(%q<bundler>, ["~> 1.0"])
70
73
  s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
71
74
  s.add_dependency(%q<rack-test>, [">= 0"])
72
- s.add_dependency(%q<guard-test>, [">= 0"])
73
75
  s.add_dependency(%q<minitest>, [">= 0"])
74
76
  s.add_dependency(%q<pry>, [">= 0"])
75
77
  end
76
78
  else
77
79
  s.add_dependency(%q<sinatra>, ["~> 1.4"])
78
80
  s.add_dependency(%q<coffee-script>, ["~> 2.2"])
79
- s.add_dependency(%q<sass>, ["= 3.3.0.rc.2"])
81
+ s.add_dependency(%q<sass>, ["~> 3"])
80
82
  s.add_dependency(%q<rack-contrib>, [">= 0"])
81
83
  s.add_dependency(%q<rack-livereload>, [">= 0"])
84
+ s.add_dependency(%q<guard>, ["~> 2.2"])
85
+ s.add_dependency(%q<guard-livereload>, [">= 0"])
86
+ s.add_dependency(%q<guard-test>, [">= 0"])
82
87
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
83
- s.add_dependency(%q<bundler>, ["~> 1.0"])
84
88
  s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
85
89
  s.add_dependency(%q<rack-test>, [">= 0"])
86
- s.add_dependency(%q<guard-test>, [">= 0"])
87
90
  s.add_dependency(%q<minitest>, [">= 0"])
88
91
  s.add_dependency(%q<pry>, [">= 0"])
89
92
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vitrine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.18
4
+ version: 0.0.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julik Tarkhanov
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: sass
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '='
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: 3.3.0.rc.2
47
+ version: '3'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '='
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: 3.3.0.rc.2
54
+ version: '3'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rack-contrib
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -81,63 +81,77 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rdoc
84
+ name: guard
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ~>
88
88
  - !ruby/object:Gem::Version
89
- version: '3.12'
89
+ version: '2.2'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ~>
95
95
  - !ruby/object:Gem::Version
96
- version: '3.12'
96
+ version: '2.2'
97
97
  - !ruby/object:Gem::Dependency
98
- name: bundler
98
+ name: guard-livereload
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
- version: '1.0'
103
+ version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ~>
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
- version: '1.0'
110
+ version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: jeweler
112
+ name: guard-test
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rdoc
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - ~>
116
130
  - !ruby/object:Gem::Version
117
- version: 1.8.7
131
+ version: '3.12'
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - ~>
123
137
  - !ruby/object:Gem::Version
124
- version: 1.8.7
138
+ version: '3.12'
125
139
  - !ruby/object:Gem::Dependency
126
- name: rack-test
140
+ name: jeweler
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - '>='
143
+ - - ~>
130
144
  - !ruby/object:Gem::Version
131
- version: '0'
145
+ version: 1.8.7
132
146
  type: :development
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
- - - '>='
150
+ - - ~>
137
151
  - !ruby/object:Gem::Version
138
- version: '0'
152
+ version: 1.8.7
139
153
  - !ruby/object:Gem::Dependency
140
- name: guard-test
154
+ name: rack-test
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
157
  - - '>='