synvert 0.9.0 → 0.12.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 +5 -5
- data/.travis.yml +6 -3
- data/CHANGELOG.md +19 -1
- data/Gemfile +2 -0
- data/README.md +4 -4
- data/Rakefile +3 -1
- data/bin/synvert +2 -2
- data/lib/synvert.rb +3 -2
- data/lib/synvert/cli.rb +154 -61
- data/lib/synvert/snippet.rb +16 -12
- data/lib/synvert/version.rb +2 -2
- data/spec/spec_helper.rb +3 -1
- data/spec/synvert/snippet_spec.rb +23 -17
- data/synvert.gemspec +17 -15
- metadata +12 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e1c67ec2f25a9e357beea399dbdf83f6d4a46a2e3a3729843e2cca128a662b73
|
4
|
+
data.tar.gz: 4327ecc60f5d4681c2f03bd6e63c2e854a3f9f278c363a71ef9a48126d82320b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ce66beb043128746d3771c38a13887e5bd560246c925c5a1570180878b6b86694a4c83074cb5982adfc21f9a930b13b63434d551050270f92f27e485c3500ac5
|
7
|
+
data.tar.gz: 0550f8223f2f21f4639e5c63dc475767a281c710b06291c69783f68a22441cfb0d8f92f068c22d24d436521cab40c5bcc90d9836b951b3e0e27835be45443561
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,24 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
-
|
3
|
+
## 0.12.0 (2021-03-01)
|
4
|
+
|
5
|
+
* Display `synvert-core` and `parser` version
|
6
|
+
* Generate a new snippet
|
7
|
+
|
8
|
+
## 0.11.1 (2021-02-20)
|
9
|
+
|
10
|
+
* Use `Synvert::VERSION` instead of `Synvert::Core::VERSION`
|
11
|
+
|
12
|
+
## 0.11.0 (2021-02-15)
|
13
|
+
|
14
|
+
* Add `--list-all` option
|
15
|
+
* Add post install message
|
16
|
+
* Fix `Synvert::Snippet.fetch_core_version`
|
17
|
+
|
18
|
+
## 0.10.0 (2021-02-07)
|
19
|
+
|
20
|
+
* Use new `Core::Confiruation`
|
21
|
+
* Use require instead of eval in order to preserve normal Ruby semantics
|
4
22
|
|
5
23
|
## 0.9.0
|
6
24
|
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
# Synvert
|
2
2
|
|
3
|
-
[](http://travis-ci.org/xinminlabs/synvert)
|
4
|
+
[](https://coveralls.io/r/xinminlabs/synvert)
|
5
|
+
[](http://badge.fury.io/rb/synvert)
|
6
6
|
|
7
7
|
Synvert = syntax + convert, makes it easy to convert ruby code
|
8
8
|
automatically.
|
9
9
|
|
10
|
-
Synvert is tested against MRI 1.9.3, 2.0.0 and 2.
|
10
|
+
Synvert is tested against MRI 1.9.3, 2.0.0, 2.1.7 and 2.2.3.
|
11
11
|
|
12
12
|
Synvert is composed by synvert-core and synvert-snippets.
|
13
13
|
|
data/Rakefile
CHANGED
data/bin/synvert
CHANGED
data/lib/synvert.rb
CHANGED
data/lib/synvert/cli.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'optparse'
|
3
4
|
|
4
5
|
module Synvert
|
@@ -14,9 +15,7 @@ module Synvert
|
|
14
15
|
|
15
16
|
# Initialize a CLI.
|
16
17
|
def initialize
|
17
|
-
@options = {command: 'run', custom_snippet_paths: [], snippet_names: []}
|
18
|
-
Core::Configuration.instance.set :skip_files, []
|
19
|
-
Core::Configuration.instance.set :default_snippets_path, File.join(ENV['HOME'], '.synvert')
|
18
|
+
@options = { command: 'run', custom_snippet_paths: [], snippet_names: [] }
|
20
19
|
end
|
21
20
|
|
22
21
|
# Run the CLI.
|
@@ -29,6 +28,9 @@ module Synvert
|
|
29
28
|
when 'list'
|
30
29
|
load_rewriters
|
31
30
|
list_available_rewriters
|
31
|
+
when 'list-all'
|
32
|
+
load_rewriters
|
33
|
+
list_all_rewriters_in_json
|
32
34
|
when 'open'
|
33
35
|
open_rewriter
|
34
36
|
when 'query'
|
@@ -39,14 +41,17 @@ module Synvert
|
|
39
41
|
show_rewriter
|
40
42
|
when 'sync'
|
41
43
|
sync_snippets
|
44
|
+
when 'generate'
|
45
|
+
generate_snippet
|
42
46
|
else
|
47
|
+
# run
|
43
48
|
load_rewriters
|
44
49
|
@options[:snippet_names].each do |snippet_name|
|
45
50
|
puts "===== #{snippet_name} started ====="
|
46
51
|
group, name = snippet_name.split('/')
|
47
52
|
rewriter = Core::Rewriter.call group, name
|
48
53
|
rewriter.warnings.each do |warning|
|
49
|
-
puts
|
54
|
+
puts '[Warn] ' + warning.message
|
50
55
|
end
|
51
56
|
puts rewriter.todo if rewriter.todo
|
52
57
|
puts "===== #{snippet_name} done ====="
|
@@ -69,64 +74,82 @@ module Synvert
|
|
69
74
|
|
70
75
|
# Run OptionParser to parse arguments.
|
71
76
|
def run_option_parser(args)
|
72
|
-
optparse =
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
77
|
+
optparse =
|
78
|
+
OptionParser.new do |opts|
|
79
|
+
opts.banner = 'Usage: synvert [project_path]'
|
80
|
+
opts.on '-d',
|
81
|
+
'--load SNIPPET_PATHS',
|
82
|
+
'load custom snippets, snippet paths can be local file path or remote http url' do |snippet_paths|
|
83
|
+
@options[:custom_snippet_paths] = snippet_paths.split(',').map(&:strip)
|
84
|
+
end
|
85
|
+
opts.on '--list-all', 'list all available snippets name and description in json format' do
|
86
|
+
@options[:command] = 'list-all'
|
87
|
+
end
|
88
|
+
opts.on '-l', '--list', 'list all available snippets' do
|
89
|
+
@options[:command] = 'list'
|
90
|
+
end
|
91
|
+
opts.on '-o', '--open SNIPPET_NAME', 'Open a snippet' do |snippet_name|
|
92
|
+
@options[:command] = 'open'
|
93
|
+
@options[:snippet_name] = snippet_name
|
94
|
+
end
|
95
|
+
opts.on '-q', '--query QUERY', 'query specified snippets' do |query|
|
96
|
+
@options[:command] = 'query'
|
97
|
+
@options[:query] = query
|
98
|
+
end
|
99
|
+
opts.on '--skip FILE_PATTERNS',
|
100
|
+
'skip specified files or directories, separated by comma, e.g. app/models/post.rb,vendor/plugins/**/*.rb' do |file_patterns|
|
101
|
+
@options[:skip_file_patterns] = file_patterns.split(',')
|
102
|
+
end
|
103
|
+
opts.on '-s',
|
104
|
+
'--show SNIPPET_NAME',
|
105
|
+
'show specified snippet description, SNIPPET_NAME is combined by group and name, e.g. ruby/new_hash_syntax' do |snippet_name|
|
106
|
+
@options[:command] = 'show'
|
107
|
+
@options[:snippet_name] = snippet_name
|
108
|
+
end
|
109
|
+
opts.on '--sync', 'sync snippets' do
|
110
|
+
@options[:command] = 'sync'
|
111
|
+
end
|
112
|
+
opts.on '-r',
|
113
|
+
'--run SNIPPET_NAMES',
|
114
|
+
'run specified snippets, each SNIPPET_NAME is combined by group and name, e.g. ruby/new_hash_syntax,ruby/new_lambda_syntax' do |snippet_names|
|
115
|
+
@options[:snippet_names] = snippet_names.split(',').map(&:strip)
|
116
|
+
end
|
117
|
+
opts.on '-g',
|
118
|
+
'--generate NEW_SNIPPET_NAME',
|
119
|
+
'generate a new snippet' do |name|
|
120
|
+
@options[:command] = 'generate'
|
121
|
+
@options[:snippet_name] = name
|
122
|
+
end
|
123
|
+
opts.on '-v', '--version', 'show this version' do
|
124
|
+
puts "#{VERSION} (with synvert-core #{Core::VERSION} and parser #{Parser::VERSION})"
|
125
|
+
exit
|
126
|
+
end
|
104
127
|
end
|
105
|
-
end
|
106
128
|
paths = optparse.parse(args)
|
107
|
-
Core::Configuration.
|
129
|
+
Core::Configuration.path = paths.first || Dir.pwd
|
108
130
|
if @options[:skip_file_patterns] && !@options[:skip_file_patterns].empty?
|
109
|
-
skip_files =
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
131
|
+
skip_files =
|
132
|
+
@options[:skip_file_patterns].map do |file_pattern|
|
133
|
+
full_file_pattern = File.join(Core::Configuration.path, file_pattern)
|
134
|
+
Dir.glob(full_file_pattern)
|
135
|
+
end.flatten
|
136
|
+
Core::Configuration.skip_files = skip_files
|
114
137
|
end
|
115
138
|
end
|
116
139
|
|
117
140
|
# Load all rewriters.
|
118
141
|
def load_rewriters
|
119
|
-
Dir.glob(File.join(default_snippets_path, 'lib/**/*.rb')).each { |file|
|
142
|
+
Dir.glob(File.join(default_snippets_path, 'lib/**/*.rb')).each { |file| require file }
|
120
143
|
|
121
144
|
@options[:custom_snippet_paths].each do |snippet_path|
|
122
|
-
if
|
145
|
+
if /^http/.match?(snippet_path)
|
123
146
|
uri = URI.parse snippet_path
|
124
147
|
eval(uri.read)
|
125
148
|
else
|
126
|
-
|
149
|
+
require snippet_path
|
127
150
|
end
|
128
151
|
end
|
129
|
-
rescue
|
152
|
+
rescue StandardError
|
130
153
|
FileUtils.rm_rf default_snippets_path
|
131
154
|
retry
|
132
155
|
end
|
@@ -134,22 +157,44 @@ module Synvert
|
|
134
157
|
# List and print all available rewriters.
|
135
158
|
def list_available_rewriters
|
136
159
|
if Core::Rewriter.availables.empty?
|
137
|
-
puts
|
160
|
+
puts 'There is no snippet under ~/.synvert, please run `synvert --sync` to fetch snippets.'
|
138
161
|
else
|
139
162
|
Core::Rewriter.availables.each do |group, rewriters|
|
140
163
|
puts group
|
141
|
-
rewriters.each do |name,
|
142
|
-
puts
|
164
|
+
rewriters.each do |name, _rewriter|
|
165
|
+
puts ' ' + name
|
143
166
|
end
|
144
167
|
end
|
145
168
|
puts
|
146
169
|
end
|
147
170
|
end
|
148
171
|
|
172
|
+
def list_all_rewriters_in_json
|
173
|
+
if Core::Rewriter.availables.empty?
|
174
|
+
puts 'There is no snippet under ~/.synvert, please run `synvert --sync` to fetch snippets.'
|
175
|
+
return
|
176
|
+
end
|
177
|
+
|
178
|
+
output = []
|
179
|
+
Core::Rewriter.availables.each do |group, rewriters|
|
180
|
+
rewriters.each do |name, rewriter|
|
181
|
+
rewriter.process_with_sandbox
|
182
|
+
output << {
|
183
|
+
group: group,
|
184
|
+
name: name,
|
185
|
+
description: rewriter.description,
|
186
|
+
sub_snippets: rewriter.sub_snippets.map(&:name)
|
187
|
+
}
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
puts JSON.generate(output)
|
192
|
+
end
|
193
|
+
|
149
194
|
# Open one rewriter.
|
150
195
|
def open_rewriter
|
151
196
|
editor = [ENV['SYNVERT_EDITOR'], ENV['EDITOR']].find { |e| !e.nil? && !e.empty? }
|
152
|
-
return puts
|
197
|
+
return puts 'To open a synvert snippet, set $EDITOR or $SYNVERT_EDITOR' unless editor
|
153
198
|
|
154
199
|
path = File.expand_path(File.join(default_snippets_path, "lib/#{@options[:snippet_name]}.rb"))
|
155
200
|
if File.exist? path
|
@@ -164,13 +209,13 @@ module Synvert
|
|
164
209
|
Core::Rewriter.availables.each do |group, rewriters|
|
165
210
|
if group.include? @options[:query]
|
166
211
|
puts group
|
167
|
-
rewriters.each do |name,
|
168
|
-
puts
|
212
|
+
rewriters.each do |name, _rewriter|
|
213
|
+
puts ' ' + name
|
169
214
|
end
|
170
215
|
elsif rewriters.keys.any? { |name| name.include? @options[:query] }
|
171
216
|
puts group
|
172
|
-
rewriters.each do |name,
|
173
|
-
puts
|
217
|
+
rewriters.each do |name, _rewriter|
|
218
|
+
puts ' ' + name if name.include?(@options[:query])
|
174
219
|
end
|
175
220
|
end
|
176
221
|
end
|
@@ -186,9 +231,9 @@ module Synvert
|
|
186
231
|
puts rewriter.description
|
187
232
|
rewriter.sub_snippets.each do |sub_rewriter|
|
188
233
|
puts
|
189
|
-
puts
|
234
|
+
puts '=' * 80
|
190
235
|
puts "snippet: #{sub_rewriter.name}"
|
191
|
-
puts
|
236
|
+
puts '=' * 80
|
192
237
|
puts sub_rewriter.description
|
193
238
|
end
|
194
239
|
else
|
@@ -198,16 +243,64 @@ module Synvert
|
|
198
243
|
|
199
244
|
# sync snippets
|
200
245
|
def sync_snippets
|
201
|
-
Snippet.sync
|
202
|
-
puts
|
246
|
+
Snippet.new(default_snippets_path).sync
|
247
|
+
puts 'synvert snippets are synced'
|
203
248
|
core_version = Snippet.fetch_core_version
|
204
249
|
if Gem::Version.new(core_version) > Gem::Version.new(Synvert::Core::VERSION)
|
205
250
|
puts "synvert-core is updated, please install synvert-core #{core_version}"
|
206
251
|
end
|
207
252
|
end
|
208
253
|
|
254
|
+
# generate a new snippet
|
255
|
+
def generate_snippet
|
256
|
+
group, name = @options[:snippet_name].split('/')
|
257
|
+
FileUtils.mkdir_p("lib/#{group}")
|
258
|
+
FileUtils.mkdir_p("spec/#{group}")
|
259
|
+
lib_content = <<~EOF
|
260
|
+
# frozen_string_literal: true
|
261
|
+
|
262
|
+
Synvert::Rewriter.new '#{group}', '#{name}' do
|
263
|
+
description <<~EOS
|
264
|
+
It convert Foo to Bar
|
265
|
+
|
266
|
+
```ruby
|
267
|
+
Foo
|
268
|
+
```
|
269
|
+
|
270
|
+
=>
|
271
|
+
|
272
|
+
```ruby
|
273
|
+
Bar
|
274
|
+
```
|
275
|
+
EOS
|
276
|
+
|
277
|
+
within_files '**/*.rb' do
|
278
|
+
with_node type: 'const', to_source: 'Foo' do
|
279
|
+
replace_with 'Bar'
|
280
|
+
end
|
281
|
+
end
|
282
|
+
end
|
283
|
+
EOF
|
284
|
+
spec_content = <<~EOF
|
285
|
+
# frozen_string_literal: true
|
286
|
+
|
287
|
+
require 'spec_helper'
|
288
|
+
|
289
|
+
RSpec.describe 'Convert Foo to Bar' do
|
290
|
+
let(:rewriter_name) { '#{group}/#{name}' }
|
291
|
+
let(:fake_file_path) { 'foobar.rb' }
|
292
|
+
let(:test_content) { 'Foo' }
|
293
|
+
let(:test_rewritten_content) { 'Bar' }
|
294
|
+
|
295
|
+
include_examples 'convertable'
|
296
|
+
end
|
297
|
+
EOF
|
298
|
+
File.write("lib/#{group}/#{name}.rb", lib_content)
|
299
|
+
File.write("spec/#{group}/#{name}_spec.rb", spec_content)
|
300
|
+
end
|
301
|
+
|
209
302
|
def default_snippets_path
|
210
|
-
|
303
|
+
File.join(ENV['HOME'], '.synvert')
|
211
304
|
end
|
212
305
|
end
|
213
306
|
end
|
data/lib/synvert/snippet.rb
CHANGED
@@ -1,24 +1,28 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'open-uri'
|
3
4
|
require 'json'
|
4
5
|
|
5
6
|
module Synvert
|
6
7
|
# Manage synvert snippets.
|
7
8
|
class Snippet
|
9
|
+
def self.fetch_core_version
|
10
|
+
content = URI.open('https://rubygems.org/api/v1/versions/synvert-core.json').read
|
11
|
+
JSON.parse(content).first['number']
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(snippets_path)
|
15
|
+
@snippets_path = snippets_path
|
16
|
+
end
|
17
|
+
|
8
18
|
# synchronize snippets from github.
|
9
|
-
def
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
system("git pull --rebase")
|
19
|
+
def sync
|
20
|
+
if File.exist?(@snippets_path)
|
21
|
+
FileUtils.cd @snippets_path
|
22
|
+
Kernel.system('git pull --rebase')
|
14
23
|
else
|
15
|
-
system("git clone https://github.com/xinminlabs/synvert-snippets.git #{snippets_path}")
|
24
|
+
Kernel.system("git clone https://github.com/xinminlabs/synvert-snippets.git #{@snippets_path}")
|
16
25
|
end
|
17
26
|
end
|
18
|
-
|
19
|
-
def self.fetch_core_version
|
20
|
-
content = open("https://rubygems.org/api/v1/versions/synvert-core.json").read
|
21
|
-
JSON.parse(content).first["number"]
|
22
|
-
end
|
23
27
|
end
|
24
28
|
end
|
data/lib/synvert/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,29 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
module Synvert
|
4
6
|
describe Snippet do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
after { FileUtils.rm_rf default_snippets_path }
|
7
|
+
let(:snippets_path) { File.join(File.dirname(__FILE__), '.synvert') }
|
8
|
+
let(:snippet) { Snippet.new(snippets_path) }
|
9
|
+
after { FileUtils.rmdir(snippets_path) if File.exist?(snippets_path) }
|
9
10
|
|
10
|
-
|
11
|
-
|
12
|
-
|
11
|
+
describe '.fetch_core_version' do
|
12
|
+
it 'gets remote version' do
|
13
|
+
stub_request(:get, 'https://rubygems.org/api/v1/versions/synvert-core.json').to_return(
|
14
|
+
body: '[{"number":"0.4.2"}]'
|
15
|
+
)
|
16
|
+
expect(Snippet.fetch_core_version).to eq '0.4.2'
|
13
17
|
end
|
18
|
+
end
|
14
19
|
|
15
|
-
|
16
|
-
|
17
|
-
expect(
|
18
|
-
|
20
|
+
describe 'sync' do
|
21
|
+
it 'git clones snippets' do
|
22
|
+
expect(Kernel).to receive(:system).with(
|
23
|
+
"git clone https://github.com/xinminlabs/synvert-snippets.git #{snippets_path}"
|
24
|
+
)
|
25
|
+
snippet.sync
|
19
26
|
end
|
20
|
-
end
|
21
27
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
28
|
+
it 'git pull snippets' do
|
29
|
+
FileUtils.mkdir snippets_path
|
30
|
+
expect(Kernel).to receive(:system).with('git pull --rebase')
|
31
|
+
snippet.sync
|
32
|
+
FileUtils.cd File.dirname(__FILE__)
|
27
33
|
end
|
28
34
|
end
|
29
35
|
end
|
data/synvert.gemspec
CHANGED
@@ -1,27 +1,29 @@
|
|
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/version'
|
5
6
|
|
6
7
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
8
|
+
spec.name = 'synvert'
|
8
9
|
spec.version = Synvert::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.description =
|
12
|
-
spec.summary =
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
10
|
+
spec.authors = ['Richard Huang']
|
11
|
+
spec.email = ['flyerhzm@gmail.com']
|
12
|
+
spec.description = 'synvert is used to convert ruby code to better syntax.'
|
13
|
+
spec.summary = 'synvert = syntax + convert.'
|
14
|
+
spec.homepage = 'https://github.com/xinminlabs/synvert'
|
15
|
+
spec.license = 'MIT'
|
15
16
|
|
16
17
|
spec.files = `git ls-files`.split($/)
|
17
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = [
|
20
|
+
spec.require_paths = ['lib']
|
21
|
+
spec.post_install_message = 'Please run `synvert --sync` first to sync snippets remotely.'
|
20
22
|
|
21
|
-
spec.add_runtime_dependency
|
23
|
+
spec.add_runtime_dependency 'synvert-core', '>= 0.20.1'
|
22
24
|
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
25
|
+
spec.add_development_dependency 'bundler'
|
26
|
+
spec.add_development_dependency 'rake'
|
27
|
+
spec.add_development_dependency 'rspec'
|
28
|
+
spec.add_development_dependency 'webmock'
|
27
29
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: synvert
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Huang
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: synvert-core
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.20.1
|
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: 0.
|
26
|
+
version: 0.20.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,7 +108,7 @@ homepage: https://github.com/xinminlabs/synvert
|
|
108
108
|
licenses:
|
109
109
|
- MIT
|
110
110
|
metadata: {}
|
111
|
-
post_install_message:
|
111
|
+
post_install_message: Please run `synvert --sync` first to sync snippets remotely.
|
112
112
|
rdoc_options: []
|
113
113
|
require_paths:
|
114
114
|
- lib
|
@@ -123,9 +123,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
requirements: []
|
126
|
-
|
127
|
-
|
128
|
-
signing_key:
|
126
|
+
rubygems_version: 3.1.4
|
127
|
+
signing_key:
|
129
128
|
specification_version: 4
|
130
129
|
summary: synvert = syntax + convert.
|
131
130
|
test_files:
|