vitrine 0.0.18 → 0.0.19
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.
- checksums.yaml +4 -4
- data/Gemfile +5 -3
- data/lib/asset_compiler.rb +13 -24
- data/lib/sourcemaps.rb +0 -43
- data/lib/version.rb +1 -1
- data/test/test_vitrine_asset_compiler.rb +3 -15
- data/vitrine.gemspec +13 -10
- metadata +36 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4e9452a9802c22e3cd800ed12520dcfa01e0a15
|
4
|
+
data.tar.gz: 35f02e34fca96a5284d39aecdaca1e7667461da2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
data/lib/asset_compiler.rb
CHANGED
@@ -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
|
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
|
-
|
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
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
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
@@ -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 '
|
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 '/
|
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
|
-
|
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.
|
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>, ["
|
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>, ["
|
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>, ["
|
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.
|
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
|
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
|
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:
|
84
|
+
name: guard
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ~>
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
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: '
|
96
|
+
version: '2.2'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: guard-livereload
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - '>='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
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: '
|
110
|
+
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
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:
|
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:
|
138
|
+
version: '3.12'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
140
|
+
name: jeweler
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
128
142
|
requirements:
|
129
|
-
- -
|
143
|
+
- - ~>
|
130
144
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
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:
|
152
|
+
version: 1.8.7
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
154
|
+
name: rack-test
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
142
156
|
requirements:
|
143
157
|
- - '>='
|