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 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
  - - '>='