sprockets-sass_embedded 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 5f6b62daf25c2209dc30a139a96936334c2dd0716f9f167900a6437e1cf73f99
4
+ data.tar.gz: 88ac1cffbca937c8cd4b718601c341e18d075e1387efc818367e4c35997ecda9
5
+ SHA512:
6
+ metadata.gz: b64eb2a10cd6632ed8dad9951da98913480e8cb590809a4dcbd382935caa74b3aa76dbc1e14f1fc2cd39a0b1222362367d068de3cddbf3ef000a57e4ad403b6a
7
+ data.tar.gz: 6b7bcd2e47436fd26a9c46a04242e7dc70b12727489e3748d357545fe7d430c198cc3f18e86034d3d39f9e50acdff0fbb1afcd506be474fd1c3b8f2e3e901205
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022 Jason Garber
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,109 @@
1
+ # sprockets-sass_embedded
2
+
3
+ [![Gem](https://img.shields.io/gem/v/sprockets-sass_embedded.svg?logo=rubygems&style=for-the-badge)](https://rubygems.org/gems/sprockets-sass_embedded)
4
+ [![Downloads](https://img.shields.io/gem/dt/sprockets-sass_embedded.svg?logo=rubygems&style=for-the-badge)](https://rubygems.org/gems/sprockets-sass_embedded)
5
+ [![Build](https://img.shields.io/github/workflow/status/jgarber623/sprockets-sass_embedded/CI?logo=github&style=for-the-badge)](https://github.com/jgarber623/sprockets-sass_embedded/actions/workflows/ci.yml)
6
+ [![Maintainability](https://img.shields.io/codeclimate/maintainability/jgarber623/sprockets-sass_embedded.svg?logo=code-climate&style=for-the-badge)](https://codeclimate.com/github/jgarber623/sprockets-sass_embedded)
7
+ [![Coverage](https://img.shields.io/codeclimate/c/jgarber623/sprockets-sass_embedded.svg?logo=code-climate&style=for-the-badge)](https://codeclimate.com/github/jgarber623/sprockets-sass_embedded/code)
8
+
9
+ **A Ruby gem for processing and compressing [Sass](https://sass-lang.com) files using [Sprockets 4](https://github.com/rails/sprockets) and [Embedded Dart Sass](https://github.com/ntkme/sass-embedded-host-ruby).**
10
+
11
+ ## Installation
12
+
13
+ Before installing and using sprockets-sass_embedded, you'll want to have [Ruby](https://www.ruby-lang.org) 2.7 (or newer) installed. If you're using [Bundler](https://bundler.io) to manage gem dependencies, add sprockets-sass_embedded to your project's Gemfile:
14
+
15
+ ```ruby
16
+ gem 'sprockets-sass_embedded'
17
+ ```
18
+
19
+ …and run `bundle install` in your shell.
20
+
21
+ To install the gem manually, run the following in your shell:
22
+
23
+ ```sh
24
+ gem install sprockets-sass_embedded
25
+ ```
26
+
27
+ ## Usage
28
+
29
+ sprockets-sass_embedded works with projects leveraging Sprockets 4 for asset processing. With minimal configuration changes, [Ruby on Rails](https://rubyonrails.org), [Sinatra](https://sinatrarb.com), and [Roda](http://roda.jeremyevans.net) applications can take advantage of the features in recent versions of Dart Sass. sprockets-sass_embedded uses [Natsuki](https://github.com/ntkme)'s [sass-embedded](https://github.com/ntkme/sass-embedded-host-ruby) gem whose platform-specific releases closely track (and match version-for-version) the official [dart-sass](https://github.com/sass/dart-sass) project's releases.
30
+
31
+ The examples below assume a Sass file named `application.scss` located in the assets path (e.g. `app/assets/stylesheets/application.scss`) appropriate for your app's framework. Asset paths are highly configurable, so the location of your asset files may vary.
32
+
33
+ ### Ruby on Rails
34
+
35
+ With sprockets-sass_embedded added to your project's Gemfile and installed, set `config.assets.css_compressor = :sass_embedded` in your application's environment configuration. See the [Configuring Assets](https://guides.rubyonrails.org/configuring.html#configuring-assets) guide for additional details.
36
+
37
+ ### Sinatra
38
+
39
+ In Sinatra applications, sprockets-sass_embedded can work in conjunction with the [sinatra-asset-pipeline](https://rubygems.org/gems/sinatra-asset-pipeline) gem. Using [sinatra-asset-pipeline's defaults](https://github.com/kalasjocke/sinatra-asset-pipeline/blob/master/lib/sinatra/asset_pipeline.rb#L7-L18), a sample `app.rb` file may look like:
40
+
41
+ ```ruby
42
+ class App < Sinatra::Base
43
+ set :assets_precompile, %w(application.css)
44
+
45
+ set :assets_css_compressor, :sass_embedded
46
+
47
+ register Sinatra::AssetPipeline
48
+
49
+ get '/' do
50
+ 'Hello, world!'
51
+ end
52
+ end
53
+ ```
54
+
55
+ ### Roda
56
+
57
+ Similar to Sinatra, Roda applications may be configured to use sprockets-sass_embedded alongside the [roda-sprockets](https://rubygems.org/gems/roda-sprockets) gem. A sample `config.ru` file might look like:
58
+
59
+ ```ruby
60
+ class App < Roda
61
+ plugin :render
62
+
63
+ plugin :sprockets,
64
+ css_compressor: :sass_embedded,
65
+ debug: false,
66
+ precompile: %w[application.css]
67
+
68
+ route do |r|
69
+ r.sprockets unless opts[:environment] == 'production'
70
+
71
+ r.root do
72
+ render :index
73
+ end
74
+ end
75
+ end
76
+
77
+ run App.freeze.app
78
+ ```
79
+
80
+ ## Asset Helpers
81
+
82
+ sprockets-sass-embedded includes a number of familiar helpers (e.g. `image_path`, `image_url`, `font_path`, `font_url`) that generate asset paths for use in your application. See [the `Functions` module](https://github.com/jgarber623/sprockets-sass_embedded/blob/main/lib/sprockets/sass_embedded/sass_processor.rb#L144-L318) in `lib/sprockets/sass_embedded/sass_processor.rb` for the available helpers.
83
+
84
+ ```scss
85
+ @font-face {
86
+ font-family: "Hot Rush";
87
+ src: font_url("hot-rush.woff2") format("woff2"),
88
+ font_url("hot-rush.woff") format("woff");
89
+ }
90
+
91
+ html {
92
+ background: image_url("vaporwave.png") repeat 50% 50%;
93
+ font-family: "Times New Roman"
94
+ }
95
+
96
+ h1 {
97
+ font-family: "Hot Rush";
98
+ }
99
+ ```
100
+
101
+ ## Acknowledgments
102
+
103
+ sprockets-sass_embedded implements [Natsuki](https://github.com/ntkme)'s work from [rails/sprockets#737](https://github.com/rails/sprockets/pull/737) and wouldn't exist if not for their work bringing Dart Sass to Sprockets-enabled Ruby projects. Sprockets' internal workings are _fairly_ complicated, so the [Extending Sprockets guide](https://github.com/rails/sprockets/blob/main/guides/extending_sprockets.md) was also helpful.
104
+
105
+ sprockets-sass_embedded is written and maintained by [Jason Garber](https://sixtwothree.org).
106
+
107
+ ## License
108
+
109
+ sprockets-sass_embedded is freely available under the [MIT License](https://opensource.org/licenses/MIT). Use it, learn from it, fork it, improve it, change it, tailor it to your needs.
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sprockets
4
+ module SassEmbedded
5
+ # Sass CSS minifier.
6
+ #
7
+ # @example Using the default options.
8
+ #
9
+ # environment.register_bundle_processor 'text/css',
10
+ # Sprockets::SassEmbedded::SassCompressor
11
+ #
12
+ # @example Passing options to the SassEmbedded compiler.
13
+ #
14
+ # environment.register_bundle_processor 'text/css',
15
+ # Sprockets::SassEmbedded::SassCompressor.new({ ... })
16
+ #
17
+ class SassCompressor
18
+ VERSION = '1'
19
+
20
+ private_constant :VERSION
21
+
22
+ # @return [String]
23
+ def self.cache_key
24
+ instance.cache_key
25
+ end
26
+
27
+ # @param input [Hash]
28
+ # @return [Hash{Symbol => String}]
29
+ def self.call(input)
30
+ instance.call(input)
31
+ end
32
+
33
+ # @return [Sprockets::SassEmbedded::SassCompressor]
34
+ def self.instance
35
+ @instance ||= new
36
+ end
37
+
38
+ # @param options [Hash]
39
+ def initialize(**options)
40
+ @options = {
41
+ source_map: true,
42
+ style: :compressed,
43
+ syntax: :css
44
+ }.merge(options).freeze
45
+ end
46
+
47
+ # @return [String]
48
+ def cache_key
49
+ @cache_key ||=
50
+ [
51
+ self.class.name,
52
+ Autoload::SassEmbedded::Embedded::VERSION,
53
+ VERSION,
54
+ DigestUtils.digest(@options)
55
+ ].join(':')
56
+ end
57
+
58
+ # @param input [Hash]
59
+ # @return [Hash{Symbol => String}]
60
+ def call(input)
61
+ result = Autoload::SassEmbedded.compile_string(
62
+ input[:data],
63
+ **@options.merge(url: URIUtils.build_asset_uri(input[:filename]))
64
+ )
65
+
66
+ css = result.css
67
+
68
+ map = SourceMapUtils.combine_source_maps(
69
+ input[:metadata][:map],
70
+ SourceMapUtils.format_source_map(JSON.parse(result.source_map), input)
71
+ )
72
+
73
+ { data: css, map: map }
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,323 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sprockets
4
+ module SassEmbedded
5
+ class SassProcessor
6
+ # @see https://sass-lang.com/documentation/js-api/interfaces/Options#functions
7
+ class DartSassFunctionsHash
8
+ # @param functions [Module]
9
+ # @param options [Hash{Symbol => Hash}]
10
+ def initialize(functions, options)
11
+ @functions = functions
12
+
13
+ instance.define_singleton_method(:options, -> { options })
14
+ end
15
+
16
+ # @return [Hash{String => Proc}]
17
+ def to_hash
18
+ @functions
19
+ .public_instance_methods
20
+ .each_with_object({}) do |symbol, obj|
21
+ parameters = instance.method(symbol)
22
+ .parameters
23
+ .filter_map { |parameter| "$#{parameter.last}" if parameter.first == :req }
24
+
25
+ obj["#{symbol}(#{parameters.join(', ')})"] = ->(args) { instance.send(symbol, *args) }
26
+ end
27
+ end
28
+
29
+ alias_method :to_h, :to_hash
30
+
31
+ private
32
+
33
+ def instance
34
+ @instance ||= Class.new.extend(@functions)
35
+ end
36
+ end
37
+
38
+ private_constant :DartSassFunctionsHash
39
+
40
+ VERSION = '1'
41
+
42
+ private_constant :VERSION
43
+
44
+ # @return [String]
45
+ def self.cache_key
46
+ instance.cache_key
47
+ end
48
+
49
+ def self.call(input)
50
+ instance.call(input)
51
+ end
52
+
53
+ # @return [Sprockets::SassEmbedded::SassProcessor]
54
+ def self.instance
55
+ @instance ||= new
56
+ end
57
+
58
+ # @return [Symbol]
59
+ def self.syntax
60
+ :indented
61
+ end
62
+
63
+ # Public: Initialize template with custom options.
64
+ #
65
+ # options - Hash
66
+ # cache_version - String custom cache version. Used to force a cache
67
+ # change after code changes are made to Sass Functions.
68
+ #
69
+ def initialize(cache_version: nil, functions: nil, sass_config: {}, **_options)
70
+ @cache_version = cache_version
71
+ @sass_config = sass_config
72
+
73
+ @functions = Module.new do
74
+ include Functions
75
+ include functions if functions
76
+ class_eval(&block) if block_given?
77
+ end
78
+ end
79
+
80
+ # @return [String]
81
+ def cache_key
82
+ @cache_key ||=
83
+ [
84
+ self.class.name,
85
+ VERSION,
86
+ Autoload::SassEmbedded::Embedded::VERSION,
87
+ @cache_version
88
+ ].join(':')
89
+ end
90
+
91
+ # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
92
+ def call(input)
93
+ context = input[:environment].context_class.new(input)
94
+
95
+ options = merge_options(
96
+ functions: DartSassFunctionsHash.new(
97
+ @functions,
98
+ sprockets: {
99
+ context: context,
100
+ dependencies: context.metadata[:dependencies],
101
+ environment: input[:environment]
102
+ }
103
+ ).to_h,
104
+ load_paths: context.environment.paths,
105
+ source_map: true,
106
+ syntax: self.class.syntax,
107
+ url: URIUtils.build_asset_uri(input[:filename])
108
+ )
109
+
110
+ result = Autoload::SassEmbedded.compile_string(input[:data], **options)
111
+
112
+ css = result.css
113
+
114
+ map = SourceMapUtils.combine_source_maps(
115
+ input[:metadata][:map],
116
+ SourceMapUtils.format_source_map(JSON.parse(result.source_map), input)
117
+ )
118
+
119
+ sass_dependencies = Set.new
120
+
121
+ result.loaded_urls.each do |url|
122
+ scheme, _host, path, _query = URIUtils.split_file_uri(url)
123
+
124
+ next unless scheme == 'file'
125
+
126
+ sass_dependencies << path
127
+ context.metadata[:dependencies] << URIUtils.build_file_digest_uri(path)
128
+ end
129
+
130
+ context.metadata.merge(data: css, map: map, sass_dependencies: sass_dependencies)
131
+ end
132
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
133
+
134
+ private
135
+
136
+ def merge_options(options)
137
+ defaults = @sass_config.dup
138
+
139
+ if (load_paths = defaults.delete(:load_paths))
140
+ options[:load_paths] += load_paths
141
+ end
142
+
143
+ options.merge!(defaults)
144
+ end
145
+
146
+ # Functions injected into Sass context during Sprockets evaluation.
147
+ #
148
+ # This module may be extended to add global functionality to all Sprockets
149
+ # Sass environments. Scoping your functions to just your environment is
150
+ # preferred.
151
+ #
152
+ # @example
153
+ #
154
+ # module Sprockets::SassProcessor::Functions
155
+ # def asset_path(path, options = {})
156
+ # end
157
+ # end
158
+ #
159
+ module Functions
160
+ # Generate a URL for asset path.
161
+ #
162
+ # @param path [Sass::Script::String]
163
+ # @param options [Hash]
164
+ # @return [SassEmbedded::Value::String]
165
+ def asset_path(path, **options)
166
+ path = path.text
167
+
168
+ path, _, query, fragment = URI.split(path)[5..8]
169
+ path = sprockets_context.asset_path(path, options)
170
+ query = "?#{query}" if query
171
+ fragment = "##{fragment}" if fragment
172
+
173
+ Autoload::SassEmbedded::Value::String.new("#{path}#{query}#{fragment}", quoted: true)
174
+ end
175
+
176
+ # Generate an asset +url()+ link.
177
+ #
178
+ # @param path [Sass::Script::String]
179
+ # @return [SassEmbedded::Value::String]
180
+ def asset_url(path, **options)
181
+ Autoload::SassEmbedded::Value::String.new("url(#{asset_path(path, options).text})", quoted: false)
182
+ end
183
+
184
+ # Generate a URL for image path.
185
+ #
186
+ # @param path [Sass::Script::String]
187
+ # @return [SassEmbedded::Value::String]
188
+ def image_path(path)
189
+ asset_path(path, type: :image)
190
+ end
191
+
192
+ # Generate an image +url()+ link.
193
+ #
194
+ # @param path [Sass::Script::String]
195
+ # @return [SassEmbedded::Value::String]
196
+ def image_url(path)
197
+ asset_url(path, type: :image)
198
+ end
199
+
200
+ # Generate a URL for video path.
201
+ #
202
+ # @param path [Sass::Script::String]
203
+ # @return [SassEmbedded::Value::String]
204
+ def video_path(path)
205
+ asset_path(path, type: :video)
206
+ end
207
+
208
+ # Generate a video +url()+ link.
209
+ #
210
+ # @param path [Sass::Script::String]
211
+ # @return [SassEmbedded::Value::String]
212
+ def video_url(path)
213
+ asset_url(path, type: :video)
214
+ end
215
+
216
+ # Generate a URL for audio path.
217
+ #
218
+ # @param path [Sass::Script::String]
219
+ # @return [SassEmbedded::Value::String]
220
+ def audio_path(path)
221
+ asset_path(path, type: :audio)
222
+ end
223
+
224
+ # Generate an audio +url()+ link.
225
+ #
226
+ # @param path [Sass::Script::String]
227
+ # @return [SassEmbedded::Value::String]
228
+ def audio_url(path)
229
+ asset_url(path, type: :audio)
230
+ end
231
+
232
+ # Generate a URL for font path.
233
+ #
234
+ # @param path [Sass::Script::String]
235
+ # @return [SassEmbedded::Value::String]
236
+ def font_path(path)
237
+ asset_path(path, type: :font)
238
+ end
239
+
240
+ # Generate a font +url()+ link.
241
+ #
242
+ # @param path [Sass::Script::String]
243
+ # @return [SassEmbedded::Value::String]
244
+ def font_url(path)
245
+ asset_url(path, type: :font)
246
+ end
247
+
248
+ # Generate a URL for JavaScript path.
249
+ #
250
+ # @param path [Sass::Script::String]
251
+ # @return [SassEmbedded::Value::String]
252
+ def javascript_path(path)
253
+ asset_path(path, type: :javascript)
254
+ end
255
+
256
+ # Generate a JavaScript +url()+ link.
257
+ #
258
+ # @param path [Sass::Script::String]
259
+ # @return [SassEmbedded::Value::String]
260
+ def javascript_url(path)
261
+ asset_url(path, type: :javascript)
262
+ end
263
+
264
+ # Generate a URL for stylesheet path.
265
+ #
266
+ # @param path [Sass::Script::String]
267
+ # @return [SassEmbedded::Value::String]
268
+ def stylesheet_path(path)
269
+ asset_path(path, type: :stylesheet)
270
+ end
271
+
272
+ # Generate a stylesheet +url()+ link.
273
+ #
274
+ # @param path [Sass::Script::String]
275
+ # @return [SassEmbedded::Value::String]
276
+ def stylesheet_url(path)
277
+ asset_url(path, type: :stylesheet)
278
+ end
279
+
280
+ # Generate a +data:+ URI for asset path.
281
+ #
282
+ # @param path [Sass::Script::String]
283
+ # @return [SassEmbedded::Value::String]
284
+ def asset_data_uri(path)
285
+ url = sprockets_context.asset_data_uri(path.text)
286
+ Autoload::SassEmbedded::Value::String.new(url)
287
+ end
288
+
289
+ # Genearte a +data:+ +url()+ link.
290
+ #
291
+ # @param path [Sass::Script::String]
292
+ # @return [SassEmbedded::Value::String]
293
+ def asset_data_url(path)
294
+ Autoload::SassEmbedded::Value::String.new("url(#{asset_data_uri(path)})", quoted: false)
295
+ end
296
+
297
+ protected
298
+
299
+ # @deprecated Use #sprockets_environment or #sprockets_dependencies
300
+ # instead.
301
+ #
302
+ # @return [Sprockets::Context]
303
+ def sprockets_context
304
+ options[:sprockets][:context]
305
+ end
306
+
307
+ # A mutatable set of dependencies.
308
+ #
309
+ # @return [Set]
310
+ def sprockets_dependencies
311
+ options[:sprockets][:dependencies]
312
+ end
313
+
314
+ # The Environment.
315
+ #
316
+ # @return [Sprockets::Environment]
317
+ def sprockets_environment
318
+ options[:sprockets][:environment]
319
+ end
320
+ end
321
+ end
322
+ end
323
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sprockets
4
+ module SassEmbedded
5
+ class ScssProcessor < SassProcessor
6
+ # @return [Symbol]
7
+ def self.syntax
8
+ :scss
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sprockets
4
+ module SassEmbedded
5
+ VERSION = '0.1.0'
6
+ end
7
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sass-embedded'
4
+ require 'sprockets'
5
+
6
+ require_relative 'sass_embedded/sass_compressor'
7
+ require_relative 'sass_embedded/sass_processor'
8
+ require_relative 'sass_embedded/scss_processor'
9
+
10
+ module Sprockets
11
+ module Autoload
12
+ SassEmbedded = ::Sass
13
+ end
14
+
15
+ register_transformer 'text/sass', 'text/css', SassEmbedded::SassProcessor
16
+ register_transformer 'text/scss', 'text/css', SassEmbedded::ScssProcessor
17
+
18
+ register_compressor 'text/css', :sass_embedded, SassEmbedded::SassCompressor
19
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/sprockets/sass_embedded/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.required_ruby_version = '>= 2.7', '< 4'
7
+
8
+ spec.name = 'sprockets-sass_embedded'
9
+ spec.version = Sprockets::SassEmbedded::VERSION
10
+ spec.authors = ['Jason Garber']
11
+ spec.email = ['jason@sixtwothree.org']
12
+
13
+ spec.summary = 'Process and compress Sass files using Sprockets 4 and Embedded Dart Sass.'
14
+ spec.description = spec.summary
15
+ spec.homepage = 'https://github.com/jgarber623/sprockets-sass_embedded'
16
+ spec.license = 'MIT'
17
+
18
+ spec.files = Dir['lib/**/*'].reject { |f| File.directory?(f) }
19
+ spec.files += %w[LICENSE README.md]
20
+ spec.files += %w[sprockets-sass_embedded.gemspec]
21
+
22
+ spec.require_paths = ['lib']
23
+
24
+ spec.metadata = {
25
+ 'bug_tracker_uri' => "#{spec.homepage}/issues",
26
+ 'changelog_uri' => "#{spec.homepage}/blob/v#{spec.version}/CHANGELOG.md",
27
+ 'rubygems_mfa_required' => 'true'
28
+ }
29
+
30
+ spec.add_runtime_dependency 'sass-embedded', '>= 1.54.6'
31
+ spec.add_runtime_dependency 'sprockets', '~> 4.0'
32
+ end
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sprockets-sass_embedded
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Jason Garber
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-09-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sass-embedded
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.54.6
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.54.6
27
+ - !ruby/object:Gem::Dependency
28
+ name: sprockets
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '4.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '4.0'
41
+ description: Process and compress Sass files using Sprockets 4 and Embedded Dart Sass.
42
+ email:
43
+ - jason@sixtwothree.org
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - LICENSE
49
+ - README.md
50
+ - lib/sprockets/sass_embedded.rb
51
+ - lib/sprockets/sass_embedded/sass_compressor.rb
52
+ - lib/sprockets/sass_embedded/sass_processor.rb
53
+ - lib/sprockets/sass_embedded/scss_processor.rb
54
+ - lib/sprockets/sass_embedded/version.rb
55
+ - sprockets-sass_embedded.gemspec
56
+ homepage: https://github.com/jgarber623/sprockets-sass_embedded
57
+ licenses:
58
+ - MIT
59
+ metadata:
60
+ bug_tracker_uri: https://github.com/jgarber623/sprockets-sass_embedded/issues
61
+ changelog_uri: https://github.com/jgarber623/sprockets-sass_embedded/blob/v0.1.0/CHANGELOG.md
62
+ rubygems_mfa_required: 'true'
63
+ post_install_message:
64
+ rdoc_options: []
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '2.7'
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: '4'
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ requirements: []
81
+ rubygems_version: 3.3.16
82
+ signing_key:
83
+ specification_version: 4
84
+ summary: Process and compress Sass files using Sprockets 4 and Embedded Dart Sass.
85
+ test_files: []