sassc 1.12.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/CHANGELOG.md +61 -0
- data/Gemfile +1 -3
- data/LICENSE.txt +1 -1
- data/README.md +3 -59
- data/lib/sassc.rb +20 -1
- data/lib/sassc/dependency.rb +2 -0
- data/lib/sassc/engine.rb +2 -0
- data/lib/sassc/error.rb +9 -3
- data/lib/sassc/functions_handler.rb +3 -2
- data/lib/sassc/import_handler.rb +2 -0
- data/lib/sassc/importer.rb +2 -0
- data/lib/sassc/native.rb +3 -2
- data/lib/sassc/native/lib_c.rb +2 -0
- data/lib/sassc/native/native_context_api.rb +2 -0
- data/lib/sassc/native/native_functions_api.rb +2 -0
- data/lib/sassc/native/sass2scss_api.rb +2 -0
- data/lib/sassc/native/sass_input_style.rb +2 -0
- data/lib/sassc/native/sass_output_style.rb +2 -0
- data/lib/sassc/native/sass_value.rb +2 -0
- data/lib/sassc/native/string_list.rb +2 -0
- data/lib/sassc/sass_2_scss.rb +2 -0
- data/lib/sassc/script.rb +5 -35
- data/lib/sassc/script/functions.rb +2 -0
- data/lib/sassc/script/value.rb +137 -0
- data/lib/sassc/script/value/bool.rb +32 -0
- data/lib/sassc/script/value/color.rb +95 -0
- data/lib/sassc/script/value/list.rb +136 -0
- data/lib/sassc/script/value/map.rb +69 -0
- data/lib/sassc/script/value/number.rb +389 -0
- data/lib/sassc/script/value/string.rb +96 -0
- data/lib/sassc/script/value_conversion.rb +62 -82
- data/lib/sassc/script/value_conversion/base.rb +2 -0
- data/lib/sassc/script/value_conversion/bool.rb +2 -0
- data/lib/sassc/script/value_conversion/color.rb +2 -0
- data/lib/sassc/script/value_conversion/list.rb +2 -0
- data/lib/sassc/script/value_conversion/map.rb +2 -0
- data/lib/sassc/script/value_conversion/number.rb +2 -0
- data/lib/sassc/script/value_conversion/string.rb +2 -0
- data/lib/sassc/util.rb +231 -0
- data/lib/sassc/util/normalized_map.rb +117 -0
- data/lib/sassc/version.rb +3 -1
- data/lib/tasks/libsass.rb +2 -0
- data/sassc.gemspec +9 -5
- data/test/custom_importer_test.rb +2 -0
- data/test/engine_test.rb +5 -3
- data/test/error_test.rb +2 -0
- data/test/functions_test.rb +31 -37
- data/test/native_test.rb +2 -4
- data/test/output_style_test.rb +2 -0
- data/test/sass_2_scss_test.rb +2 -0
- data/test/test_helper.rb +2 -0
- metadata +23 -29
- data/lib/sassc/cache_stores.rb +0 -6
- data/lib/sassc/cache_stores/base.rb +0 -8
@@ -0,0 +1,117 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "delegate"
|
4
|
+
|
5
|
+
# A hash that normalizes its string keys while still allowing you to get back
|
6
|
+
# to the original keys that were stored. If several different values normalize
|
7
|
+
# to the same value, whichever is stored last wins.
|
8
|
+
|
9
|
+
class SassC::Util::NormalizedMap
|
10
|
+
|
11
|
+
# Create a normalized map
|
12
|
+
def initialize(map = nil)
|
13
|
+
@key_strings = {}
|
14
|
+
@map = {}
|
15
|
+
map.each {|key, value| self[key] = value} if map
|
16
|
+
end
|
17
|
+
|
18
|
+
# Specifies how to transform the key.
|
19
|
+
# This can be overridden to create other normalization behaviors.
|
20
|
+
def normalize(key)
|
21
|
+
key.tr("-", "_")
|
22
|
+
end
|
23
|
+
|
24
|
+
# Returns the version of `key` as it was stored before
|
25
|
+
# normalization. If `key` isn't in the map, returns it as it was
|
26
|
+
# passed in.
|
27
|
+
# @return [String]
|
28
|
+
def denormalize(key)
|
29
|
+
@key_strings[normalize(key)] || key
|
30
|
+
end
|
31
|
+
|
32
|
+
# @private
|
33
|
+
def []=(k, v)
|
34
|
+
normalized = normalize(k)
|
35
|
+
@map[normalized] = v
|
36
|
+
@key_strings[normalized] = k
|
37
|
+
v
|
38
|
+
end
|
39
|
+
|
40
|
+
# @private
|
41
|
+
def [](k)
|
42
|
+
@map[normalize(k)]
|
43
|
+
end
|
44
|
+
|
45
|
+
# @private
|
46
|
+
def has_key?(k)
|
47
|
+
@map.has_key?(normalize(k))
|
48
|
+
end
|
49
|
+
|
50
|
+
# @private
|
51
|
+
def delete(k)
|
52
|
+
normalized = normalize(k)
|
53
|
+
@key_strings.delete(normalized)
|
54
|
+
@map.delete(normalized)
|
55
|
+
end
|
56
|
+
|
57
|
+
# @return [Hash] Hash with the keys as they were stored (before normalization).
|
58
|
+
def as_stored
|
59
|
+
SassC::Util.map_keys(@map) {|k| @key_strings[k]}
|
60
|
+
end
|
61
|
+
|
62
|
+
def empty?
|
63
|
+
@map.empty?
|
64
|
+
end
|
65
|
+
|
66
|
+
def values
|
67
|
+
@map.values
|
68
|
+
end
|
69
|
+
|
70
|
+
def keys
|
71
|
+
@map.keys
|
72
|
+
end
|
73
|
+
|
74
|
+
def each
|
75
|
+
@map.each {|k, v| yield(k, v)}
|
76
|
+
end
|
77
|
+
|
78
|
+
def size
|
79
|
+
@map.size
|
80
|
+
end
|
81
|
+
|
82
|
+
def to_hash
|
83
|
+
@map.dup
|
84
|
+
end
|
85
|
+
|
86
|
+
def to_a
|
87
|
+
@map.to_a
|
88
|
+
end
|
89
|
+
|
90
|
+
def map
|
91
|
+
@map.map {|k, v| yield(k, v)}
|
92
|
+
end
|
93
|
+
|
94
|
+
def dup
|
95
|
+
d = super
|
96
|
+
d.send(:instance_variable_set, "@map", @map.dup)
|
97
|
+
d
|
98
|
+
end
|
99
|
+
|
100
|
+
def sort_by
|
101
|
+
@map.sort_by {|k, v| yield k, v}
|
102
|
+
end
|
103
|
+
|
104
|
+
def update(map)
|
105
|
+
map = map.as_stored if map.is_a?(NormalizedMap)
|
106
|
+
map.each {|k, v| self[k] = v}
|
107
|
+
end
|
108
|
+
|
109
|
+
def method_missing(method, *args, &block)
|
110
|
+
@map.send(method, *args, &block)
|
111
|
+
end
|
112
|
+
|
113
|
+
def respond_to_missing?(method, include_private = false)
|
114
|
+
@map.respond_to?(method, include_private)
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
data/lib/sassc/version.rb
CHANGED
data/lib/tasks/libsass.rb
CHANGED
data/sassc.gemspec
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
5
|
+
require "sassc/version"
|
5
6
|
|
6
7
|
Gem::Specification.new do |spec|
|
8
|
+
|
7
9
|
spec.name = "sassc"
|
8
10
|
spec.version = SassC::VERSION
|
9
11
|
spec.authors = ["Ryan Boland"]
|
@@ -17,19 +19,20 @@ Gem::Specification.new do |spec|
|
|
17
19
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
20
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
21
|
|
22
|
+
spec.required_ruby_version = ">= 2.3.3"
|
23
|
+
|
20
24
|
spec.require_paths = ["lib"]
|
21
25
|
|
22
26
|
spec.extensions = ["ext/Rakefile"]
|
23
27
|
|
24
|
-
spec.add_development_dependency "rake"
|
25
28
|
spec.add_development_dependency "minitest", "~> 5.5.1"
|
26
29
|
spec.add_development_dependency "minitest-around"
|
27
30
|
spec.add_development_dependency "test_construct"
|
28
31
|
spec.add_development_dependency "pry"
|
29
32
|
spec.add_development_dependency "bundler"
|
30
33
|
|
34
|
+
spec.add_dependency "rake"
|
31
35
|
spec.add_dependency "ffi", "~> 1.9.6"
|
32
|
-
spec.add_dependency "sass", ">= 3.3.0"
|
33
36
|
|
34
37
|
gem_dir = File.expand_path(File.dirname(__FILE__)) + "/"
|
35
38
|
`git submodule --quiet foreach pwd`.split($\).each do |submodule_path|
|
@@ -42,4 +45,5 @@ Gem::Specification.new do |spec|
|
|
42
45
|
end
|
43
46
|
end
|
44
47
|
end
|
48
|
+
|
45
49
|
end
|
data/test/engine_test.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative "test_helper"
|
2
4
|
|
3
5
|
module SassC
|
@@ -224,7 +226,7 @@ CSS
|
|
224
226
|
end
|
225
227
|
|
226
228
|
def test_encoding_matches_input
|
227
|
-
input = "$size: 30px;"
|
229
|
+
input = String.new("$size: 30px;")
|
228
230
|
input.force_encoding("UTF-8")
|
229
231
|
output = Engine.new(input).render
|
230
232
|
assert_equal input.encoding, output.encoding
|
@@ -257,13 +259,13 @@ CSS
|
|
257
259
|
end
|
258
260
|
|
259
261
|
def test_empty_template_returns_a_new_object
|
260
|
-
input =
|
262
|
+
input = String.new
|
261
263
|
output = Engine.new(input).render
|
262
264
|
assert input.object_id != output.object_id, 'empty template must return a new object'
|
263
265
|
end
|
264
266
|
|
265
267
|
def test_empty_template_encoding_matches_input
|
266
|
-
input =
|
268
|
+
input = String.new.force_encoding("ISO-8859-1")
|
267
269
|
output = Engine.new(input).render
|
268
270
|
assert_equal input.encoding, output.encoding
|
269
271
|
end
|
data/test/error_test.rb
CHANGED
data/test/functions_test.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative "test_helper"
|
2
4
|
require "stringio"
|
3
|
-
require "sass/script"
|
4
5
|
|
5
6
|
module SassC
|
6
7
|
class FunctionsTest < MiniTest::Test
|
@@ -114,7 +115,7 @@ module SassC
|
|
114
115
|
assert_sass <<-SCSS, <<-EXPECTED_CSS
|
115
116
|
div { color: nice_color_argument(red); }
|
116
117
|
SCSS
|
117
|
-
div { color:
|
118
|
+
div { color: rgb(255, 0, 0); }
|
118
119
|
EXPECTED_CSS
|
119
120
|
end
|
120
121
|
|
@@ -197,8 +198,13 @@ module SassC
|
|
197
198
|
end
|
198
199
|
|
199
200
|
module Script::Functions
|
201
|
+
|
200
202
|
def javascript_path(path)
|
201
|
-
Script::String.new("/js/#{path.value}", :string)
|
203
|
+
SassC::Script::Value::String.new("/js/#{path.value}", :string)
|
204
|
+
end
|
205
|
+
|
206
|
+
def stylesheet_path(path)
|
207
|
+
SassC::Script::Value::String.new("/css/#{path.value}", :identifier)
|
202
208
|
end
|
203
209
|
|
204
210
|
def no_return_path(path)
|
@@ -206,12 +212,12 @@ module SassC
|
|
206
212
|
end
|
207
213
|
|
208
214
|
def sass_return_path(path)
|
209
|
-
Script::String.new("#{path.value}", :string)
|
215
|
+
SassC::Script::Value::String.new("#{path.value}", :string)
|
210
216
|
end
|
211
217
|
|
212
218
|
def optional_arguments(path, optional = nil)
|
213
|
-
optional ||= Script::String.new("bar")
|
214
|
-
Script::String.new("#{path.value}/#{optional.value}", :string)
|
219
|
+
optional ||= SassC::Script::Value::String.new("bar")
|
220
|
+
SassC::Script::Value::String.new("#{path.value}/#{optional.value}", :string)
|
215
221
|
end
|
216
222
|
|
217
223
|
def function_that_raises_errors
|
@@ -222,44 +228,44 @@ module SassC
|
|
222
228
|
end
|
223
229
|
|
224
230
|
def nice_color_argument(color)
|
225
|
-
return Script::String.new(color.to_s, :
|
231
|
+
return SassC::Script::Value::String.new(color.to_s, :identifier)
|
226
232
|
end
|
227
233
|
|
228
234
|
def returns_a_color
|
229
|
-
return Script::Color.new(red: 0, green: 0, blue: 0)
|
235
|
+
return SassC::Script::Value::Color.new(red: 0, green: 0, blue: 0)
|
230
236
|
end
|
231
237
|
|
232
238
|
def returns_a_number
|
233
|
-
return
|
239
|
+
return SassC::Script::Value::Number.new(-312,'rem')
|
234
240
|
end
|
235
241
|
|
236
242
|
def returns_a_bool
|
237
|
-
return
|
243
|
+
return SassC::Script::Value::Bool.new(true)
|
238
244
|
end
|
239
245
|
|
240
246
|
def inspect_bool ( argument )
|
241
|
-
raise StandardError.new "passed value is not a Sass::Script::Value::Bool" unless argument.is_a?
|
247
|
+
raise StandardError.new "passed value is not a Sass::Script::Value::Bool" unless argument.is_a? SassC::Script::Value::Bool
|
242
248
|
return argument
|
243
249
|
end
|
244
250
|
|
245
251
|
def inspect_number ( argument )
|
246
|
-
raise StandardError.new "passed value is not a Sass::Script::Value::Number" unless argument.is_a?
|
252
|
+
raise StandardError.new "passed value is not a Sass::Script::Value::Number" unless argument.is_a? SassC::Script::Value::Number
|
247
253
|
return argument
|
248
254
|
end
|
249
255
|
|
250
256
|
def inspect_map ( argument )
|
251
257
|
argument.to_h.each_pair do |key, value|
|
252
|
-
raise StandardError.new "key #{key.inspect} is not a string" unless key.is_a?
|
258
|
+
raise StandardError.new "key #{key.inspect} is not a string" unless key.is_a? SassC::Script::Value::String
|
253
259
|
|
254
260
|
valueClass = case key.value
|
255
261
|
when 'string'
|
256
|
-
|
262
|
+
SassC::Script::Value::String
|
257
263
|
when 'number'
|
258
|
-
|
264
|
+
SassC::Script::Value::Number
|
259
265
|
when 'color'
|
260
|
-
|
266
|
+
SassC::Script::Value::Color
|
261
267
|
when 'map'
|
262
|
-
|
268
|
+
SassC::Script::Value::Map
|
263
269
|
end
|
264
270
|
|
265
271
|
raise StandardError.new "unknown key #{key.inspect}" unless valueClass
|
@@ -269,41 +275,29 @@ module SassC
|
|
269
275
|
end
|
270
276
|
|
271
277
|
def inspect_list(argument)
|
272
|
-
raise StandardError.new "passed value is not a Sass::Script::Value::List" unless argument.is_a?
|
278
|
+
raise StandardError.new "passed value is not a Sass::Script::Value::List" unless argument.is_a? SassC::Script::Value::List
|
273
279
|
return argument
|
274
280
|
end
|
275
281
|
|
276
282
|
def returns_sass_value
|
277
|
-
return
|
283
|
+
return SassC::Script::Value::Color.new(red: 0, green: 0, blue: 0)
|
278
284
|
end
|
279
285
|
|
280
286
|
def returns_sass_map
|
281
|
-
key = Script::String.new("color", "string")
|
282
|
-
value =
|
287
|
+
key = SassC::Script::Value::String.new("color", "string")
|
288
|
+
value = SassC::Script::Value::Color.new(red: 0, green: 0, blue: 0)
|
283
289
|
values = {}
|
284
290
|
values[key] = value
|
285
|
-
map =
|
291
|
+
map = SassC::Script::Value::Map.new values
|
286
292
|
return map
|
287
293
|
end
|
288
294
|
|
289
295
|
def returns_sass_list
|
290
|
-
numbers = [10, 20, 30].map
|
291
|
-
|
292
|
-
end
|
293
|
-
|
294
|
-
if Gem.loaded_specs['sass'].version < Gem::Version.create('3.5')
|
295
|
-
Sass::Script::Value::List.new(numbers, :space)
|
296
|
-
else
|
297
|
-
Sass::Script::Value::List.new(numbers, separator: :space)
|
298
|
-
end
|
296
|
+
numbers = [10, 20, 30].map { |n| SassC::Script::Value::Number.new(n, '') }
|
297
|
+
SassC::Script::Value::List.new(numbers, separator: :space)
|
299
298
|
end
|
300
299
|
|
301
|
-
module Compass
|
302
|
-
def stylesheet_path(path)
|
303
|
-
Script::String.new("/css/#{path.value}", :identifier)
|
304
|
-
end
|
305
|
-
end
|
306
|
-
include Compass
|
307
300
|
end
|
301
|
+
|
308
302
|
end
|
309
303
|
end
|
data/test/native_test.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative "test_helper"
|
2
4
|
|
3
5
|
module SassC
|
@@ -57,10 +59,6 @@ module SassC
|
|
57
59
|
refute_equal 0, status
|
58
60
|
end
|
59
61
|
|
60
|
-
def test_failed_compile_gives_error_message
|
61
|
-
skip
|
62
|
-
end
|
63
|
-
|
64
62
|
def test_custom_function
|
65
63
|
data_context = Native.make_data_context("foo { margin: foo(); }")
|
66
64
|
context = Native.data_context_get_context(data_context)
|
data/test/output_style_test.rb
CHANGED
data/test/sass_2_scss_test.rb
CHANGED
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sassc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Boland
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-09-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: rake
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: minitest
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,33 +81,33 @@ dependencies:
|
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: '0'
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
84
|
+
name: rake
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
|
-
- - "
|
87
|
+
- - ">="
|
102
88
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
89
|
+
version: '0'
|
104
90
|
type: :runtime
|
105
91
|
prerelease: false
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
|
-
- - "
|
94
|
+
- - ">="
|
109
95
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
96
|
+
version: '0'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
98
|
+
name: ffi
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
|
-
- - "
|
101
|
+
- - "~>"
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
103
|
+
version: 1.9.6
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
107
|
requirements:
|
122
|
-
- - "
|
108
|
+
- - "~>"
|
123
109
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
110
|
+
version: 1.9.6
|
125
111
|
description: Use libsass with Ruby!
|
126
112
|
email:
|
127
113
|
- ryan@tanookilabs.com
|
@@ -133,6 +119,7 @@ files:
|
|
133
119
|
- ".gitignore"
|
134
120
|
- ".gitmodules"
|
135
121
|
- ".travis.yml"
|
122
|
+
- CHANGELOG.md
|
136
123
|
- CODE_OF_CONDUCT.md
|
137
124
|
- Gemfile
|
138
125
|
- LICENSE.txt
|
@@ -334,8 +321,6 @@ files:
|
|
334
321
|
- ext/libsass/win/libsass.vcxproj
|
335
322
|
- ext/libsass/win/libsass.vcxproj.filters
|
336
323
|
- lib/sassc.rb
|
337
|
-
- lib/sassc/cache_stores.rb
|
338
|
-
- lib/sassc/cache_stores/base.rb
|
339
324
|
- lib/sassc/dependency.rb
|
340
325
|
- lib/sassc/engine.rb
|
341
326
|
- lib/sassc/error.rb
|
@@ -354,6 +339,13 @@ files:
|
|
354
339
|
- lib/sassc/sass_2_scss.rb
|
355
340
|
- lib/sassc/script.rb
|
356
341
|
- lib/sassc/script/functions.rb
|
342
|
+
- lib/sassc/script/value.rb
|
343
|
+
- lib/sassc/script/value/bool.rb
|
344
|
+
- lib/sassc/script/value/color.rb
|
345
|
+
- lib/sassc/script/value/list.rb
|
346
|
+
- lib/sassc/script/value/map.rb
|
347
|
+
- lib/sassc/script/value/number.rb
|
348
|
+
- lib/sassc/script/value/string.rb
|
357
349
|
- lib/sassc/script/value_conversion.rb
|
358
350
|
- lib/sassc/script/value_conversion/base.rb
|
359
351
|
- lib/sassc/script/value_conversion/bool.rb
|
@@ -362,6 +354,8 @@ files:
|
|
362
354
|
- lib/sassc/script/value_conversion/map.rb
|
363
355
|
- lib/sassc/script/value_conversion/number.rb
|
364
356
|
- lib/sassc/script/value_conversion/string.rb
|
357
|
+
- lib/sassc/util.rb
|
358
|
+
- lib/sassc/util/normalized_map.rb
|
365
359
|
- lib/sassc/version.rb
|
366
360
|
- lib/tasks/libsass.rb
|
367
361
|
- sassc.gemspec
|
@@ -386,7 +380,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
386
380
|
requirements:
|
387
381
|
- - ">="
|
388
382
|
- !ruby/object:Gem::Version
|
389
|
-
version:
|
383
|
+
version: 2.3.3
|
390
384
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
391
385
|
requirements:
|
392
386
|
- - ">="
|