synvert-core 0.20.1 → 0.21.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 +4 -4
- data/CHANGELOG.md +4 -3
- data/lib/synvert/core/engine/erb.rb +15 -13
- data/lib/synvert/core/node_ext.rb +8 -8
- data/lib/synvert/core/rewriter/condition/if_exist_condition.rb +1 -1
- data/lib/synvert/core/rewriter/condition/unless_exist_condition.rb +1 -1
- data/lib/synvert/core/rewriter/condition.rb +1 -1
- data/lib/synvert/core/rewriter/gem_spec.rb +1 -1
- data/lib/synvert/core/rewriter/helper.rb +17 -1
- data/lib/synvert/core/rewriter/instance.rb +3 -3
- data/lib/synvert/core/rewriter/scope/goto_scope.rb +1 -1
- data/lib/synvert/core/rewriter/scope/within_scope.rb +1 -1
- data/lib/synvert/core/rewriter.rb +9 -5
- data/lib/synvert/core/version.rb +1 -1
- data/spec/synvert/core/node_ext_spec.rb +1 -1
- data/spec/synvert/core/rewriter/helper_spec.rb +12 -0
- data/synvert-core.gemspec +8 -7
- metadata +17 -17
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bdaf84db78fb98d9d71b00025af06c099f821fc8a178002ecbc5b5e3ff68c740
|
|
4
|
+
data.tar.gz: 46ddc90eea269bb83475296081acfd0f73ed13ee94d7523bdd0e5e15434c760e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c84578b52bf4bf4f60136f764b0df276c97c4ee32be3595fd55b1303a823f282fc35f6dfee1a68166b85b0b592a2f239b22b796b0f10af861ea62bdb11e29641
|
|
7
|
+
data.tar.gz: dd47cdf203979bbd4b1cd8e164cffe6561894d25a3edcd98527983bbf46d7089f92e04d01db28893a8ac6fa1182ab846210fee4137b8b18fbbdf746f3fa0e144
|
data/CHANGELOG.md
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
-
## 0.
|
|
3
|
+
## 0.21.0 (2021-02-25)
|
|
4
4
|
|
|
5
|
-
* Set env['BUNDLE_GEMFILE'] before parsing Gemfile.lock
|
|
6
|
-
* Add Rewriter::RubyVersion test
|
|
5
|
+
* Set `env['BUNDLE_GEMFILE']` before parsing `Gemfile.lock`
|
|
6
|
+
* Add `Rewriter::RubyVersion` test
|
|
7
|
+
* Add `reject_keys_from_hash` helper method
|
|
7
8
|
|
|
8
9
|
## 0.20.0 (2021-02-15)
|
|
9
10
|
|
|
@@ -31,21 +31,23 @@ module Synvert::Core
|
|
|
31
31
|
private
|
|
32
32
|
|
|
33
33
|
def decode_ruby_stmt(source)
|
|
34
|
-
source.gsub(/#{ERUBY_STMT_SPLITTER}(.+?)#{ERUBY_STMT_SPLITTER}/
|
|
34
|
+
source.gsub(/#{ERUBY_STMT_SPLITTER}(.+?)#{ERUBY_STMT_SPLITTER}/mo) { "<%#{Regexp.last_match(1)}%>" }
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
def decode_ruby_output(source)
|
|
38
|
-
source.gsub(/@output_buffer.append=\((.+?)\);#{ERUBY_EXPR_SPLITTER}/
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
source.gsub(/@output_buffer.append=\((.+?)\);#{ERUBY_EXPR_SPLITTER}/mo) {
|
|
39
|
+
"<%=#{Regexp.last_match(1)}%>"
|
|
40
|
+
}.gsub(/@output_buffer.append= (.+?)\s+(do|\{)(\s*\|[^|]*\|)?\s*#{ERUBY_EXPR_SPLITTER}/mo) { |m|
|
|
41
|
+
"<%=#{m.sub('@output_buffer.append= ', '').sub(ERUBY_EXPR_SPLITTER, '')}%>"
|
|
42
|
+
}
|
|
41
43
|
end
|
|
42
44
|
|
|
43
45
|
def decode_html_output(source)
|
|
44
|
-
source.gsub(/@output_buffer.safe_append='(.+?)'.freeze;/m) { reverse_escape_text(
|
|
45
|
-
/@output_buffer.safe_append=\((.+?)\);#{ERUBY_EXPR_SPLITTER}/
|
|
46
|
-
) { reverse_escape_text(
|
|
47
|
-
/@output_buffer.safe_append=(.+?)\s+(do|\{)(\s*\|[^|]*\|)?\s*#{ERUBY_EXPR_SPLITTER}/
|
|
48
|
-
) { reverse_escape_text(
|
|
46
|
+
source.gsub(/@output_buffer.safe_append='(.+?)'.freeze;/m) { reverse_escape_text(Regexp.last_match(1)) }.gsub(
|
|
47
|
+
/@output_buffer.safe_append=\((.+?)\);#{ERUBY_EXPR_SPLITTER}/mo
|
|
48
|
+
) { reverse_escape_text(Regexp.last_match(1)) }.gsub(
|
|
49
|
+
/@output_buffer.safe_append=(.+?)\s+(do|\{)(\s*\|[^|]*\|)?\s*#{ERUBY_EXPR_SPLITTER}/mo
|
|
50
|
+
) { reverse_escape_text(Regexp.last_match(1)) }
|
|
49
51
|
end
|
|
50
52
|
|
|
51
53
|
def remove_erubis_buf(source)
|
|
@@ -97,7 +99,7 @@ module Synvert::Core
|
|
|
97
99
|
|
|
98
100
|
def add_expr_literal(src, code)
|
|
99
101
|
flush_newline_if_pending(src)
|
|
100
|
-
if code
|
|
102
|
+
if BLOCK_EXPR.match?(code)
|
|
101
103
|
src << '@output_buffer.append= ' << code << ERUBY_EXPR_SPLITTER
|
|
102
104
|
else
|
|
103
105
|
src << '@output_buffer.append=(' << code << ');' << ERUBY_EXPR_SPLITTER
|
|
@@ -106,7 +108,7 @@ module Synvert::Core
|
|
|
106
108
|
|
|
107
109
|
def add_expr_escaped(src, code)
|
|
108
110
|
flush_newline_if_pending(src)
|
|
109
|
-
if code
|
|
111
|
+
if BLOCK_EXPR.match?(code)
|
|
110
112
|
src << '@output_buffer.safe_append= ' << code << ERUBY_EXPR_SPLITTER
|
|
111
113
|
else
|
|
112
114
|
src << '@output_buffer.safe_append=(' << code << ');' << ERUBY_EXPR_SPLITTER
|
|
@@ -119,9 +121,9 @@ module Synvert::Core
|
|
|
119
121
|
index =
|
|
120
122
|
case code
|
|
121
123
|
when /\A(\s*)\r?\n/
|
|
122
|
-
|
|
124
|
+
Regexp.last_match(1).length
|
|
123
125
|
when /\A(\s+)/
|
|
124
|
-
|
|
126
|
+
Regexp.last_match(1).end_with?(' ') ? Regexp.last_match(1).length - 1 : Regexp.last_match(1).length
|
|
125
127
|
else
|
|
126
128
|
0
|
|
127
129
|
end
|
|
@@ -321,11 +321,11 @@ module Parser::AST
|
|
|
321
321
|
#
|
|
322
322
|
# @yield [child] Gives a child node.
|
|
323
323
|
# @yieldparam child [Parser::AST::Node] child node
|
|
324
|
-
def recursive_children
|
|
324
|
+
def recursive_children(&block)
|
|
325
325
|
children.each do |child|
|
|
326
|
-
if Parser::AST::Node
|
|
326
|
+
if child.is_a?(Parser::AST::Node)
|
|
327
327
|
yield child
|
|
328
|
-
child.recursive_children
|
|
328
|
+
child.recursive_children(&block)
|
|
329
329
|
end
|
|
330
330
|
end
|
|
331
331
|
end
|
|
@@ -364,7 +364,7 @@ module Parser::AST
|
|
|
364
364
|
# @raise [Synvert::Core::MethodNotSupported] if string in block {{ }} does not support.
|
|
365
365
|
def rewritten_source(code)
|
|
366
366
|
code.gsub(/{{(.*?)}}/m) do
|
|
367
|
-
old_code =
|
|
367
|
+
old_code = Regexp.last_match(1)
|
|
368
368
|
if respond_to? old_code.split(/\.|\[/).first
|
|
369
369
|
evaluated = instance_eval old_code
|
|
370
370
|
case evaluated
|
|
@@ -410,20 +410,20 @@ module Parser::AST
|
|
|
410
410
|
def match_value?(actual, expected)
|
|
411
411
|
case expected
|
|
412
412
|
when Symbol
|
|
413
|
-
if Parser::AST::Node
|
|
413
|
+
if actual.is_a?(Parser::AST::Node)
|
|
414
414
|
actual.to_source == ":#{expected}"
|
|
415
415
|
else
|
|
416
416
|
actual.to_sym == expected
|
|
417
417
|
end
|
|
418
418
|
when String
|
|
419
|
-
if Parser::AST::Node
|
|
419
|
+
if actual.is_a?(Parser::AST::Node)
|
|
420
420
|
actual.to_source == expected || (actual.to_source[0] == ':' && actual.to_source[1..-1] == expected) ||
|
|
421
421
|
actual.to_source[1...-1] == expected
|
|
422
422
|
else
|
|
423
423
|
actual.to_s == expected
|
|
424
424
|
end
|
|
425
425
|
when Regexp
|
|
426
|
-
if Parser::AST::Node
|
|
426
|
+
if actual.is_a?(Parser::AST::Node)
|
|
427
427
|
actual.to_source =~ Regexp.new(expected.to_s, Regexp::MULTILINE)
|
|
428
428
|
else
|
|
429
429
|
actual.to_s =~ Regexp.new(expected.to_s, Regexp::MULTILINE)
|
|
@@ -435,7 +435,7 @@ module Parser::AST
|
|
|
435
435
|
when NilClass
|
|
436
436
|
actual.nil?
|
|
437
437
|
when Numeric
|
|
438
|
-
if Parser::AST::Node
|
|
438
|
+
if actual.is_a?(Parser::AST::Node)
|
|
439
439
|
actual.children[0] == expected
|
|
440
440
|
else
|
|
441
441
|
actual == expected
|
|
@@ -12,7 +12,7 @@ module Synvert::Core
|
|
|
12
12
|
# comparator key can be eq, lt, gt, lte, gte or ne.
|
|
13
13
|
def initialize(name, comparator)
|
|
14
14
|
@name = name
|
|
15
|
-
if Hash
|
|
15
|
+
if comparator.is_a?(Hash)
|
|
16
16
|
@operator = comparator.keys.first
|
|
17
17
|
@version = Gem::Version.new comparator.values.first
|
|
18
18
|
else
|
|
@@ -65,7 +65,23 @@ module Synvert::Core
|
|
|
65
65
|
#
|
|
66
66
|
# strip_brackets("(1..100)") #=> "1..100"
|
|
67
67
|
def strip_brackets(code)
|
|
68
|
-
code.sub(/^\((.*)\)$/) {
|
|
68
|
+
code.sub(/^\((.*)\)$/) { Regexp.last_match(1) }.sub(/^\[(.*)\]$/) { Regexp.last_match(1) }.sub(/^{(.*)}$/) {
|
|
69
|
+
Regexp.last_match(1)
|
|
70
|
+
}
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Reject some keys from hash node.
|
|
74
|
+
#
|
|
75
|
+
# @param hash_node [Parser::AST::Node]
|
|
76
|
+
# @param keys [Array] keys should be rejected from the hash.
|
|
77
|
+
# @return [String] source of of the hash node after rejecting some keys.
|
|
78
|
+
#
|
|
79
|
+
# @example
|
|
80
|
+
#
|
|
81
|
+
# hash_node = Parser::CurrentRuby.parse("{ key1: 'value1', key2: 'value2' }")
|
|
82
|
+
# reject_keys_from_hash(hash_node, :key1) => "key2: 'value2'"
|
|
83
|
+
def reject_keys_from_hash(hash_node, *keys)
|
|
84
|
+
hash_node.children.reject { |pair_node| keys.include?(pair_node.key.to_value) }.map(&:to_source).join(', ')
|
|
69
85
|
end
|
|
70
86
|
end
|
|
71
87
|
end
|
|
@@ -18,7 +18,7 @@ module Synvert::Core
|
|
|
18
18
|
@file_source[file_path] ||=
|
|
19
19
|
begin
|
|
20
20
|
source = File.read(file_path)
|
|
21
|
-
source = Engine::ERB.encode(source) if
|
|
21
|
+
source = Engine::ERB.encode(source) if /\.erb$/.match?(file_path)
|
|
22
22
|
source
|
|
23
23
|
end
|
|
24
24
|
end
|
|
@@ -45,7 +45,7 @@ module Synvert::Core
|
|
|
45
45
|
# @param file_path [String] file path
|
|
46
46
|
# @param source [String] file source
|
|
47
47
|
def write_file(file_path, source)
|
|
48
|
-
source = Engine::ERB.decode(source) if
|
|
48
|
+
source = Engine::ERB.decode(source) if /\.erb/.match?(file_path)
|
|
49
49
|
File.write file_path, source.gsub(/ +\n/, "\n")
|
|
50
50
|
@file_source[file_path] = nil
|
|
51
51
|
@file_ast[file_path] = nil
|
|
@@ -101,7 +101,7 @@ module Synvert::Core
|
|
|
101
101
|
|
|
102
102
|
process_with_node ast do
|
|
103
103
|
begin
|
|
104
|
-
instance_eval
|
|
104
|
+
instance_eval(&@block)
|
|
105
105
|
rescue NoMethodError
|
|
106
106
|
puts @current_node.debug_info
|
|
107
107
|
raise
|
|
@@ -56,7 +56,8 @@ module Synvert::Core
|
|
|
56
56
|
# @param name [String] the unique rewriter name.
|
|
57
57
|
# @param rewriter [Synvert::Core::Rewriter] the rewriter to register.
|
|
58
58
|
def register(group, name, rewriter)
|
|
59
|
-
group
|
|
59
|
+
group = group.to_s
|
|
60
|
+
name = name.to_s
|
|
60
61
|
rewriters[group] ||= {}
|
|
61
62
|
rewriters[group][name] = rewriter
|
|
62
63
|
end
|
|
@@ -68,7 +69,8 @@ module Synvert::Core
|
|
|
68
69
|
# @return [Synvert::Core::Rewriter] the matching rewriter.
|
|
69
70
|
# @raise [Synvert::Core::RewriterNotFound] if the registered rewriter is not found.
|
|
70
71
|
def fetch(group, name)
|
|
71
|
-
group
|
|
72
|
+
group = group.to_s
|
|
73
|
+
name = name.to_s
|
|
72
74
|
if exist? group, name
|
|
73
75
|
rewriters[group][name]
|
|
74
76
|
else
|
|
@@ -84,7 +86,8 @@ module Synvert::Core
|
|
|
84
86
|
# @return [Synvert::Core::Rewriter] the registered rewriter.
|
|
85
87
|
# @raise [Synvert::Core::RewriterNotFound] if the registered rewriter is not found.
|
|
86
88
|
def call(group, name, sandbox = false)
|
|
87
|
-
group
|
|
89
|
+
group = group.to_s
|
|
90
|
+
name = name.to_s
|
|
88
91
|
if exist? group, name
|
|
89
92
|
rewriter = rewriters[group][name]
|
|
90
93
|
if sandbox
|
|
@@ -104,7 +107,8 @@ module Synvert::Core
|
|
|
104
107
|
# @param name [String] the rewriter name.
|
|
105
108
|
# @return [Boolean] true if the rewriter exist.
|
|
106
109
|
def exist?(group, name)
|
|
107
|
-
group
|
|
110
|
+
group = group.to_s
|
|
111
|
+
name = name.to_s
|
|
108
112
|
if rewriters[group] && rewriters[group][name]
|
|
109
113
|
true
|
|
110
114
|
else
|
|
@@ -163,7 +167,7 @@ module Synvert::Core
|
|
|
163
167
|
# Process the rewriter.
|
|
164
168
|
# It will call the block.
|
|
165
169
|
def process
|
|
166
|
-
instance_eval
|
|
170
|
+
instance_eval(&@block)
|
|
167
171
|
end
|
|
168
172
|
|
|
169
173
|
# Process rewriter with sandbox mode.
|
data/lib/synvert/core/version.rb
CHANGED
|
@@ -80,5 +80,17 @@ module Synvert::Core
|
|
|
80
80
|
expect(dummy_instance.strip_brackets('(123]')).to eq '(123]'
|
|
81
81
|
end
|
|
82
82
|
end
|
|
83
|
+
|
|
84
|
+
describe '#reject_keys_from_hash' do
|
|
85
|
+
it 'rejects single key' do
|
|
86
|
+
hash_node = Parser::CurrentRuby.parse("{ key1: 'value1', key2: 'value2' }")
|
|
87
|
+
expect(dummy_instance.reject_keys_from_hash(hash_node, :key1)).to eq "key2: 'value2'"
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it 'rejects multi keys' do
|
|
91
|
+
hash_node = Parser::CurrentRuby.parse("{ key1: 'value1', key2: 'value2', key3: 'value3', key4: 'value4' }")
|
|
92
|
+
expect(dummy_instance.reject_keys_from_hash(hash_node, :key1, :key3)).to eq "key2: 'value2', key4: 'value4'"
|
|
93
|
+
end
|
|
94
|
+
end
|
|
83
95
|
end
|
|
84
96
|
end
|
data/synvert-core.gemspec
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
5
|
require 'synvert/core/version'
|
|
5
6
|
|
|
@@ -8,8 +9,8 @@ Gem::Specification.new do |spec|
|
|
|
8
9
|
spec.version = Synvert::Core::VERSION
|
|
9
10
|
spec.authors = ["Richard Huang"]
|
|
10
11
|
spec.email = ["flyerhzm@gmail.com"]
|
|
11
|
-
spec.summary =
|
|
12
|
-
spec.description =
|
|
12
|
+
spec.summary = 'convert ruby code to better syntax.'
|
|
13
|
+
spec.description = 'convert ruby code to better syntax automatically.'
|
|
13
14
|
spec.homepage = "https://github.com/xinminlabs/synvert-core"
|
|
14
15
|
spec.license = "MIT"
|
|
15
16
|
|
|
@@ -18,13 +19,13 @@ Gem::Specification.new do |spec|
|
|
|
18
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
20
|
spec.require_paths = ["lib"]
|
|
20
21
|
|
|
21
|
-
spec.add_runtime_dependency "parser", "~> 3.0.0"
|
|
22
22
|
spec.add_runtime_dependency "activesupport"
|
|
23
23
|
spec.add_runtime_dependency "erubis"
|
|
24
|
+
spec.add_runtime_dependency "parser", "~> 3.0.0"
|
|
24
25
|
|
|
25
26
|
spec.add_development_dependency "bundler"
|
|
26
|
-
spec.add_development_dependency "rake"
|
|
27
|
-
spec.add_development_dependency "rspec"
|
|
28
27
|
spec.add_development_dependency "guard"
|
|
29
28
|
spec.add_development_dependency "guard-rspec"
|
|
29
|
+
spec.add_development_dependency "rake"
|
|
30
|
+
spec.add_development_dependency "rspec"
|
|
30
31
|
end
|
metadata
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: synvert-core
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.21.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Richard Huang
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-02-
|
|
11
|
+
date: 2021-02-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
14
|
+
name: activesupport
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: '0'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- - "
|
|
24
|
+
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
26
|
+
version: '0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name:
|
|
28
|
+
name: erubis
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - ">="
|
|
@@ -39,19 +39,19 @@ dependencies:
|
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
42
|
+
name: parser
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - "
|
|
45
|
+
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version:
|
|
47
|
+
version: 3.0.0
|
|
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:
|
|
54
|
+
version: 3.0.0
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: bundler
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -67,7 +67,7 @@ dependencies:
|
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: '0'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
70
|
+
name: guard
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
73
|
- - ">="
|
|
@@ -81,7 +81,7 @@ dependencies:
|
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '0'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: rspec
|
|
84
|
+
name: guard-rspec
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
87
|
- - ">="
|
|
@@ -95,7 +95,7 @@ dependencies:
|
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
96
|
version: '0'
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
98
|
+
name: rake
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
100
100
|
requirements:
|
|
101
101
|
- - ">="
|
|
@@ -109,7 +109,7 @@ dependencies:
|
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
110
|
version: '0'
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
112
|
+
name: rspec
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
114
114
|
requirements:
|
|
115
115
|
- - ">="
|