rack-sassc 0.0.0
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 +7 -0
- data/.gitignore +8 -0
- data/Gemfile +3 -0
- data/LICENSE +20 -0
- data/README.md +131 -0
- data/Rakefile +11 -0
- data/lib/rack/sassc/version.rb +6 -0
- data/lib/rack/sassc.rb +93 -0
- data/lib/rack-sassc.rb +2 -0
- data/rack-sassc.gemspec +22 -0
- data/test/other-public/sassc/main.sass +3 -0
- data/test/other-public/stylesheets/main.css +3 -0
- data/test/other-public/stylesheets/main.css.map +12 -0
- data/test/public/css/already.css +1 -0
- data/test/public/scss/main.scss +3 -0
- data/test/test_rack_sassc.rb +198 -0
- metadata +143 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a2b6576825c66fc983efbdb31c7c9f140f6b6d75bfcdf7b5b4ca05f98ccccbe8
|
4
|
+
data.tar.gz: fc2728ba84d1ea93577ed8e40da1492d84541fb83d35edf9bf76769094aa2ec5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 44aa927dc2e90882201445447589ab5df67c538c212ca2777dd72f604e933bc0be7e539f1f33c57d1b06bc0153145a074ff07ea93094f8144e8dcf2c22c1f36f
|
7
|
+
data.tar.gz: 29ce04609231b501f4028a7c53c93af24793b843ea6692f489e6e4a07e7f844507a48c8245b1f4976f258e449858ad9fa7d2aa90008c5cce24e4834a9d0b9dbf
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2019 Mickael Riga
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
5
|
+
in the Software without restriction, including without limitation the rights
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
8
|
+
furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
11
|
+
all copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
THE SOFTWARE.
|
20
|
+
|
data/README.md
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
Rack::SassC
|
2
|
+
===========
|
3
|
+
|
4
|
+
Rack middleware for processing sass/scss files. The current version has many
|
5
|
+
limitations but feel free to send pull requests if you find a bug or if you wish
|
6
|
+
to improve the functionnalities.
|
7
|
+
|
8
|
+
The current behaviour implies these limitations:
|
9
|
+
|
10
|
+
The files are processed each time they are requested. Since by default it does
|
11
|
+
it only when not in production, the speed penalty is kind of acceptable. But I
|
12
|
+
intend to improve it and use modification time.
|
13
|
+
|
14
|
+
The location of the public directory and directory names for CSS and SCSS are
|
15
|
+
editable, but both are assumed to be directly placed inside the public
|
16
|
+
directory.
|
17
|
+
|
18
|
+
The files cannot be nested, they are assumed to be directly inside the SCSS
|
19
|
+
directory, and the generated files are therefore created directly inside the CSS
|
20
|
+
directory.
|
21
|
+
|
22
|
+
There is no special error handling yet. Any error will raise a typical error
|
23
|
+
page.
|
24
|
+
|
25
|
+
Installation
|
26
|
+
------------
|
27
|
+
|
28
|
+
Add this line to your application's Gemfile:
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
gem 'rack-sassc'
|
32
|
+
```
|
33
|
+
|
34
|
+
And then execute:
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
bundle install
|
38
|
+
```
|
39
|
+
|
40
|
+
Or install it yourself as:
|
41
|
+
|
42
|
+
```ruby
|
43
|
+
gem install rack-sassc
|
44
|
+
```
|
45
|
+
|
46
|
+
Usage
|
47
|
+
-----
|
48
|
+
|
49
|
+
In your `config.ru`:
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
require 'rack/sassc'
|
53
|
+
|
54
|
+
use Rack::SassC
|
55
|
+
```
|
56
|
+
|
57
|
+
This is the basic usage with default behaviour, which is equivalent to using
|
58
|
+
these options:
|
59
|
+
|
60
|
+
```ruby
|
61
|
+
require 'rack/sassc'
|
62
|
+
|
63
|
+
use Rack::SassC, {
|
64
|
+
check: ENV['RACK_ENV'] != 'production',
|
65
|
+
public_location: 'public',
|
66
|
+
syntax: :scss,
|
67
|
+
css_dirname: :css,
|
68
|
+
scss_dirname: :scss,
|
69
|
+
create_map_file: true,
|
70
|
+
}
|
71
|
+
```
|
72
|
+
|
73
|
+
Here is the explanation for each option:
|
74
|
+
|
75
|
+
`check` determines if the files are processed or not. Setting it to `false` is
|
76
|
+
equivalent to not having the middleware at all. By default it is `true` if the
|
77
|
+
rack environment is NOT `production`. The value of `check` can also be a Proc
|
78
|
+
which receives the `env` on each request.
|
79
|
+
|
80
|
+
`public_location` is where you serve static files on your app. It is set to
|
81
|
+
"public" by default. Whatever path you set it to will be expanded.
|
82
|
+
|
83
|
+
`scss_dirname` and `css_dirname` are just the name of the directories in which
|
84
|
+
we search for template files and we generate css/map files.
|
85
|
+
|
86
|
+
`syntax` is `:scss` or `:sass`. It is used for the engine, but also for the
|
87
|
+
extension of template files, which means they have to match.
|
88
|
+
|
89
|
+
`create_map_file` is self explanatory. No map file will be created if set to
|
90
|
+
`false`.
|
91
|
+
|
92
|
+
Additionally, you can pass another option called `engine_opts`. It will be
|
93
|
+
merged with the default options of the SassC engine. For example if you don't
|
94
|
+
want a compressed output, you could do this:
|
95
|
+
|
96
|
+
```ruby
|
97
|
+
use Rack::SassC, {
|
98
|
+
engine_opts: {style: :nested}
|
99
|
+
}
|
100
|
+
```
|
101
|
+
|
102
|
+
The default options for the engine are the following:
|
103
|
+
|
104
|
+
```ruby
|
105
|
+
{
|
106
|
+
style: :compressed,
|
107
|
+
syntax: @opts[:syntax],
|
108
|
+
load_paths: [location(@opts[:scss_dirname])],
|
109
|
+
}
|
110
|
+
```
|
111
|
+
|
112
|
+
Or this when no map file is to be created:
|
113
|
+
|
114
|
+
```ruby
|
115
|
+
{
|
116
|
+
style: :compressed,
|
117
|
+
syntax: @opts[:syntax],
|
118
|
+
load_paths: [location(@opts[:scss_dirname])],
|
119
|
+
source_map_file: "#{filename}.css.map",
|
120
|
+
source_map_contents: true,
|
121
|
+
}
|
122
|
+
```
|
123
|
+
|
124
|
+
Alternatives
|
125
|
+
------------
|
126
|
+
|
127
|
+
As far as I know the only alternative to this library is
|
128
|
+
[SasscRack](https://github.com/hkrutzer/sasscrack) by
|
129
|
+
[hkrutzer](https://github.com/hkrutzer) which arguably has a much better name
|
130
|
+
than mine `;-)`
|
131
|
+
|
data/Rakefile
ADDED
data/lib/rack/sassc.rb
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'sassc'
|
2
|
+
|
3
|
+
module Rack
|
4
|
+
class SassC
|
5
|
+
|
6
|
+
attr_reader :opts
|
7
|
+
|
8
|
+
def initialize app, opts={}
|
9
|
+
@app = app
|
10
|
+
|
11
|
+
@opts = {
|
12
|
+
check: ENV['RACK_ENV'] != 'production',
|
13
|
+
public_location: 'public',
|
14
|
+
syntax: :scss,
|
15
|
+
css_dirname: :css,
|
16
|
+
scss_dirname: :scss,
|
17
|
+
create_map_file: true,
|
18
|
+
}.merge(opts)
|
19
|
+
|
20
|
+
@opts[:public_location] = ::File.expand_path @opts[:public_location]
|
21
|
+
end
|
22
|
+
|
23
|
+
def call env
|
24
|
+
handle_path(env['PATH_INFO']) if must_check?(env)
|
25
|
+
@app.call env
|
26
|
+
end
|
27
|
+
|
28
|
+
def location dirname
|
29
|
+
::File.join @opts[:public_location], dirname.to_s
|
30
|
+
end
|
31
|
+
|
32
|
+
def filepath dirname, filename, ext
|
33
|
+
::File.join location(dirname), "#{filename}.#{ext}"
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def must_check? env
|
39
|
+
if @opts[:check].respond_to? :call
|
40
|
+
@opts[:check].call env
|
41
|
+
else
|
42
|
+
@opts[:check]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def handle_path path_info
|
47
|
+
return unless path_info[/\/#{@opts[:css_dirname]}\/[^\/]+\.css$/]
|
48
|
+
|
49
|
+
filename = ::File.basename path_info, '.*'
|
50
|
+
scss_filepath = filepath(@opts[:scss_dirname], filename, @opts[:syntax])
|
51
|
+
return unless ::File.exist?(scss_filepath)
|
52
|
+
|
53
|
+
scss = ::File.read(scss_filepath)
|
54
|
+
engine = ::SassC::Engine.new(scss, build_engine_opts(filename))
|
55
|
+
css_filepath = filepath(@opts[:css_dirname], filename, :css)
|
56
|
+
|
57
|
+
::File.open(css_filepath, 'w') do |css_file|
|
58
|
+
css_file.write(engine.render)
|
59
|
+
end
|
60
|
+
|
61
|
+
if @opts[:create_map_file]
|
62
|
+
::File.open("#{css_filepath}.map", 'w') do |map_file|
|
63
|
+
map_file.write(engine.source_map)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def build_engine_opts filename
|
69
|
+
engine_opts = {
|
70
|
+
style: :compressed,
|
71
|
+
syntax: @opts[:syntax],
|
72
|
+
load_paths: [location(@opts[:scss_dirname])],
|
73
|
+
}
|
74
|
+
|
75
|
+
if @opts[:create_map_file]
|
76
|
+
engine_opts.merge!({
|
77
|
+
source_map_file: "#{filename}.css.map",
|
78
|
+
source_map_contents: true,
|
79
|
+
})
|
80
|
+
end
|
81
|
+
|
82
|
+
if @opts.has_key?(:engine_opts)
|
83
|
+
engine_opts.merge! @opts[:engine_opts]
|
84
|
+
end
|
85
|
+
|
86
|
+
engine_opts
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
require 'rack/sassc/version'
|
93
|
+
|
data/lib/rack-sassc.rb
ADDED
data/rack-sassc.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'lib/rack/sassc/version')
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = 'rack-sassc'
|
5
|
+
s.version = Rack::SassC::VERSION
|
6
|
+
s.summary = "Rack middleware for SassC"
|
7
|
+
s.description = "Rack middleware for SassC which process sass/scss files when in development environment."
|
8
|
+
s.authors = ["Mickael Riga"]
|
9
|
+
s.email = ["mig@mypeplum.com"]
|
10
|
+
s.files = `git ls-files -z`.split("\x0")
|
11
|
+
s.homepage = "https://github.com/mig-hub/rack-sassc"
|
12
|
+
s.license = 'MIT'
|
13
|
+
s.require_paths = ["lib"]
|
14
|
+
|
15
|
+
s.add_dependency 'rack', '>= 1.0'
|
16
|
+
s.add_dependency 'sassc', '~> 2.0'
|
17
|
+
s.add_development_dependency 'minitest', '~> 5.8'
|
18
|
+
s.add_development_dependency 'rack-test', '~> 0.6'
|
19
|
+
s.add_development_dependency "rake"
|
20
|
+
s.add_development_dependency "bundler"
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
.already{color:yellow}
|
@@ -0,0 +1,198 @@
|
|
1
|
+
ENV['RACK_ENV'] = 'test'
|
2
|
+
|
3
|
+
require 'rack/sassc'
|
4
|
+
require 'rack/test'
|
5
|
+
require 'minitest/autorun'
|
6
|
+
|
7
|
+
# Simulate a setup where `public` is in the current directory
|
8
|
+
Dir.chdir('test')
|
9
|
+
|
10
|
+
class TestRackSassC < MiniTest::Test
|
11
|
+
|
12
|
+
include Rack::Test::Methods
|
13
|
+
|
14
|
+
KEEP_IN_CSS_DIR = ['already.css']
|
15
|
+
|
16
|
+
def setup
|
17
|
+
teardown
|
18
|
+
@inner_app = inner_app
|
19
|
+
@app_options = {}
|
20
|
+
end
|
21
|
+
|
22
|
+
def teardown
|
23
|
+
Dir.children('public/css').each do |f|
|
24
|
+
::File.delete("public/css/#{f}") unless KEEP_IN_CSS_DIR.include?(f)
|
25
|
+
end
|
26
|
+
if ::File.exist? "public/scss/tmp.scss"
|
27
|
+
::File.delete "public/scss/tmp.scss"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def app
|
32
|
+
Rack::Lint.new(Rack::SassC.new(@inner_app, @app_options))
|
33
|
+
end
|
34
|
+
|
35
|
+
def inner_app
|
36
|
+
Rack::Static.new(lambda {|env|
|
37
|
+
[200, {'Content-Type'=>'text/plain'}, ["Inner"]]
|
38
|
+
}, {
|
39
|
+
urls: ["/css", "/scss"],
|
40
|
+
root: "public"
|
41
|
+
})
|
42
|
+
end
|
43
|
+
|
44
|
+
def inner_app_other
|
45
|
+
Rack::Static.new(lambda {|env|
|
46
|
+
[200, {'Content-Type'=>'text/plain'}, ["Inner"]]
|
47
|
+
}, {
|
48
|
+
urls: ["/stylesheets", "/sassc"],
|
49
|
+
root: "other-public"
|
50
|
+
})
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_non_css_request_is_served
|
54
|
+
get "/"
|
55
|
+
assert_equal 200, last_response.status
|
56
|
+
assert_equal "Inner", last_response.body
|
57
|
+
assert_css_dir_untouched
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_existing_file_without_sassc_template_is_served
|
61
|
+
# Files that are already css from a library or something.
|
62
|
+
get "/css/already.css"
|
63
|
+
assert_equal 200, last_response.status
|
64
|
+
assert_equal 'text/css', last_response.headers['Content-Type']
|
65
|
+
assert last_response.body[/\.already\{color:yellow\}/]
|
66
|
+
assert_css_dir_untouched
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_non_existing_file_without_sassc_template_is_not_found
|
70
|
+
# There is neither a file in css or in scss
|
71
|
+
get "/css/notfound.css"
|
72
|
+
assert_equal 404, last_response.status
|
73
|
+
assert_css_dir_untouched
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_file_with_sassc_template_but_wrong_css_path_pass_through
|
77
|
+
# There is corresponding file in scss but the css path is wrong
|
78
|
+
get "/wrong-css/main.css"
|
79
|
+
assert_equal 200, last_response.status
|
80
|
+
assert_equal "Inner", last_response.body
|
81
|
+
assert_css_dir_untouched
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_file_with_sassc_template_is_created_and_served
|
85
|
+
get "/css/main.css"
|
86
|
+
assert_equal 200, last_response.status
|
87
|
+
assert_equal 'text/css', last_response.headers['Content-Type']
|
88
|
+
assert last_response.body[/body\{color:yellow\}/]
|
89
|
+
assert last_response.body[/sourceMappingURL=main\.css\.map/]
|
90
|
+
assert_created_in_css_dir "main.css", "main.css.map"
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_file_with_sassc_template_is_uptodate
|
94
|
+
::File.open('public/scss/tmp.scss', 'w') do |file|
|
95
|
+
file.write "body{color:yellow}"
|
96
|
+
end
|
97
|
+
get "/css/tmp.css"
|
98
|
+
::File.open('public/scss/tmp.scss', 'w') do |file|
|
99
|
+
file.write "body{color:orange}"
|
100
|
+
end
|
101
|
+
get "/css/tmp.css"
|
102
|
+
assert_equal 200, last_response.status
|
103
|
+
assert_equal 'text/css', last_response.headers['Content-Type']
|
104
|
+
assert last_response.body[/body\{color:orange\}/]
|
105
|
+
refute last_response.body[/yellow/]
|
106
|
+
assert last_response.body[/sourceMappingURL=tmp\.css\.map/]
|
107
|
+
assert_created_in_css_dir "tmp.css", "tmp.css.map"
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_option_to_not_create_map_file
|
111
|
+
@app_options = {create_map_file: false}
|
112
|
+
get "/css/main.css"
|
113
|
+
assert_equal 200, last_response.status
|
114
|
+
assert_equal 'text/css', last_response.headers['Content-Type']
|
115
|
+
assert last_response.body[/body\{color:yellow\}/]
|
116
|
+
refute last_response.body[/sourceMappingURL/]
|
117
|
+
assert_created_in_css_dir "main.css"
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_middleware_can_be_disabled_via_check_option
|
121
|
+
@app_options = {check: false}
|
122
|
+
get "/css/main.css"
|
123
|
+
assert_equal 404, last_response.status
|
124
|
+
assert_css_dir_untouched
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_check_option_can_be_a_proc
|
128
|
+
@app_options = {
|
129
|
+
check: proc{ |env|
|
130
|
+
assert_equal '/css/main.css', env['PATH_INFO']
|
131
|
+
false
|
132
|
+
}
|
133
|
+
}
|
134
|
+
get "/css/main.css"
|
135
|
+
assert_equal 404, last_response.status
|
136
|
+
assert_css_dir_untouched
|
137
|
+
end
|
138
|
+
|
139
|
+
def test_public_location_option_is_expanded
|
140
|
+
local_opts = {public_location: 'other-public'}
|
141
|
+
local_app = Rack::SassC.new(inner_app, local_opts)
|
142
|
+
assert_equal ::File.expand_path('other-public'), local_app.opts[:public_location]
|
143
|
+
# Make sure the original opts hash is unchanged
|
144
|
+
assert_equal 'other-public', local_opts[:public_location]
|
145
|
+
end
|
146
|
+
|
147
|
+
def test_location_returns_expanded_path_in_public
|
148
|
+
local_opts = {public_location: 'other_public'}
|
149
|
+
local_app = Rack::SassC.new(inner_app, local_opts)
|
150
|
+
assert_equal ::File.join(::File.expand_path('other_public'), 'dir'), local_app.location(:dir)
|
151
|
+
end
|
152
|
+
|
153
|
+
def test_filepath_returns_expanded_path_in_public
|
154
|
+
local_opts = {public_location: 'other_public'}
|
155
|
+
local_app = Rack::SassC.new(inner_app, local_opts)
|
156
|
+
assert_equal ::File.join(::File.expand_path('other_public'), 'dir', 'main.sass'), local_app.filepath(:dir, :main, :sass)
|
157
|
+
end
|
158
|
+
|
159
|
+
def test_works_with_different_dirnames_and_syntax
|
160
|
+
@inner_app = inner_app_other
|
161
|
+
@app_options = {
|
162
|
+
public_location: 'other-public',
|
163
|
+
css_dirname: :stylesheets,
|
164
|
+
scss_dirname: :sassc,
|
165
|
+
syntax: :sass
|
166
|
+
}
|
167
|
+
get "/stylesheets/main.css"
|
168
|
+
assert_equal 200, last_response.status
|
169
|
+
assert_equal 'text/css', last_response.headers['Content-Type']
|
170
|
+
assert last_response.body[/body\{color:blue\}/]
|
171
|
+
assert last_response.body[/sourceMappingURL=main\.css\.map/]
|
172
|
+
assert_created_in_css_dir "main.css", "main.css.map"
|
173
|
+
end
|
174
|
+
|
175
|
+
private
|
176
|
+
|
177
|
+
# This will assert the files were created
|
178
|
+
# but also fail if other files where created that
|
179
|
+
# are not passed as argument. Therefore the list
|
180
|
+
# of files created needs to be exhaustive.
|
181
|
+
def assert_created_in_css_dir *created_files
|
182
|
+
if @app_options.has_key?(:public_location) and @app_options.has_key?(:css_dirname)
|
183
|
+
possible_files = created_files.dup
|
184
|
+
path = "#{@app_options[:public_location]}/#{@app_options[:css_dirname]}"
|
185
|
+
else
|
186
|
+
possible_files = KEEP_IN_CSS_DIR + created_files
|
187
|
+
path = 'public/css'
|
188
|
+
end
|
189
|
+
assert_equal possible_files.sort, Dir.children(path).sort
|
190
|
+
end
|
191
|
+
|
192
|
+
# Sugar for legibility
|
193
|
+
def assert_css_dir_untouched
|
194
|
+
assert_created_in_css_dir
|
195
|
+
end
|
196
|
+
|
197
|
+
end
|
198
|
+
|
metadata
ADDED
@@ -0,0 +1,143 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rack-sassc
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mickael Riga
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-04-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rack
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: sassc
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '5.8'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5.8'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rack-test
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.6'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.6'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: bundler
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description: Rack middleware for SassC which process sass/scss files when in development
|
98
|
+
environment.
|
99
|
+
email:
|
100
|
+
- mig@mypeplum.com
|
101
|
+
executables: []
|
102
|
+
extensions: []
|
103
|
+
extra_rdoc_files: []
|
104
|
+
files:
|
105
|
+
- ".gitignore"
|
106
|
+
- Gemfile
|
107
|
+
- LICENSE
|
108
|
+
- README.md
|
109
|
+
- Rakefile
|
110
|
+
- lib/rack-sassc.rb
|
111
|
+
- lib/rack/sassc.rb
|
112
|
+
- lib/rack/sassc/version.rb
|
113
|
+
- rack-sassc.gemspec
|
114
|
+
- test/other-public/sassc/main.sass
|
115
|
+
- test/other-public/stylesheets/main.css
|
116
|
+
- test/other-public/stylesheets/main.css.map
|
117
|
+
- test/public/css/already.css
|
118
|
+
- test/public/scss/main.scss
|
119
|
+
- test/test_rack_sassc.rb
|
120
|
+
homepage: https://github.com/mig-hub/rack-sassc
|
121
|
+
licenses:
|
122
|
+
- MIT
|
123
|
+
metadata: {}
|
124
|
+
post_install_message:
|
125
|
+
rdoc_options: []
|
126
|
+
require_paths:
|
127
|
+
- lib
|
128
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ">="
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0'
|
138
|
+
requirements: []
|
139
|
+
rubygems_version: 3.0.3
|
140
|
+
signing_key:
|
141
|
+
specification_version: 4
|
142
|
+
summary: Rack middleware for SassC
|
143
|
+
test_files: []
|