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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8941e003bae93eb24a188ff2dbcb48dbad8cc2b6
4
- data.tar.gz: e796edccc2f96ff9ea1f3303c51360ffdbdf90a3
2
+ SHA256:
3
+ metadata.gz: e1c67ec2f25a9e357beea399dbdf83f6d4a46a2e3a3729843e2cca128a662b73
4
+ data.tar.gz: 4327ecc60f5d4681c2f03bd6e63c2e854a3f9f278c363a71ef9a48126d82320b
5
5
  SHA512:
6
- metadata.gz: 77e919724aa7ec0508621a38a7a5cea5d85ec05925bf8b0bdacb9e6509cb5ce5593ebc5b96110d90d771d7ef936891e5a6c48de8303e427602d7d11ff350da32
7
- data.tar.gz: 7ec460303474e7f5116983c6e6097cb9338e9f8c40eb93dad50d9978e0a1fa1beda9cd86fa6937588a99e68d17b3769206ef69b08004a3835d758ec26c334b2a
6
+ metadata.gz: ce66beb043128746d3771c38a13887e5bd560246c925c5a1570180878b6b86694a4c83074cb5982adfc21f9a930b13b63434d551050270f92f27e485c3500ac5
7
+ data.tar.gz: 0550f8223f2f21f4639e5c63dc475767a281c710b06291c69783f68a22441cfb0d8f92f068c22d24d436521cab40c5bcc90d9836b951b3e0e27835be45443561
data/.travis.yml CHANGED
@@ -1,5 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
- - 2.0.0
5
- - 2.1.1
3
+ - 2.3
4
+ - 2.4
5
+ - 2.5
6
+ - 2.6
7
+ - 2.7
8
+ - 3.0
data/CHANGELOG.md CHANGED
@@ -1,6 +1,24 @@
1
1
  # CHANGELOG
2
2
 
3
- Try to keep same version to gem `synvert-core`.
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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in synvert.gemspec
data/README.md CHANGED
@@ -1,13 +1,13 @@
1
1
  # Synvert
2
2
 
3
- [![Build Status](https://secure.travis-ci.org/xinminlabs/synvert.png)](http://travis-ci.org/xinminlabs/synvert)
4
- [![Coverage Status](https://coveralls.io/repos/xinminlabs/synvert/badge.png?branch=master)](https://coveralls.io/r/xinminlabs/synvert)
5
- [![Gem Version](https://badge.fury.io/rb/synvert.png)](http://badge.fury.io/rb/synvert)
3
+ [![Build Status](https://secure.travis-ci.org/xinminlabs/synvert.svg)](http://travis-ci.org/xinminlabs/synvert)
4
+ [![Coverage Status](https://coveralls.io/repos/xinminlabs/synvert/badge.svg?branch=master)](https://coveralls.io/r/xinminlabs/synvert)
5
+ [![Gem Version](https://badge.fury.io/rb/synvert.svg)](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.1.1.
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
@@ -1,4 +1,6 @@
1
- require "bundler/gem_tasks"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
2
4
  require 'rspec/core/rake_task'
3
5
 
4
6
  RSpec::Core::RakeTask.new(:spec)
data/bin/synvert CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
- # coding: utf-8
2
+ # frozen_string_literal: true
3
3
 
4
- $LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__))
4
+ $LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
5
5
  require 'synvert'
6
6
 
7
7
  result = Synvert::CLI.run
data/lib/synvert.rb CHANGED
@@ -1,5 +1,6 @@
1
- # coding: utf-8
2
- require "synvert/version"
1
+ # frozen_string_literal: true
2
+
3
+ require 'synvert/version'
3
4
  require 'bundler'
4
5
  require 'synvert/core'
5
6
 
data/lib/synvert/cli.rb CHANGED
@@ -1,4 +1,5 @@
1
- # coding: utf-8
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 "[Warn] " + warning.message
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 = OptionParser.new do |opts|
73
- opts.banner = "Usage: synvert [project_path]"
74
- opts.on '-d', '--load SNIPPET_PATHS', 'load custom snippets, snippet paths can be local file path or remote http url' do |snippet_paths|
75
- @options[:custom_snippet_paths] = snippet_paths.split(',').map(&:strip)
76
- end
77
- opts.on '-l', '--list', 'list all available snippets' do
78
- @options[:command] = 'list'
79
- end
80
- opts.on '-o', '--open SNIPPET_NAME', 'Open a snippet' do |snippet_name|
81
- @options[:command] = 'open'
82
- @options[:snippet_name] = snippet_name
83
- end
84
- opts.on '-q', '--query QUERY', 'query specified snippets' do |query|
85
- @options[:command] = 'query'
86
- @options[:query] = query
87
- end
88
- opts.on '--skip FILE_PATTERNS', 'skip specified files or directories, separated by comma, e.g. app/models/post.rb,vendor/plugins/**/*.rb' do |file_patterns|
89
- @options[:skip_file_patterns] = file_patterns.split(',')
90
- end
91
- opts.on '-s', '--show SNIPPET_NAME', 'show specified snippet description, SNIPPET_NAME is combined by group and name, e.g. ruby/new_hash_syntax' do |snippet_name|
92
- @options[:command] = 'show'
93
- @options[:snippet_name] = snippet_name
94
- end
95
- opts.on '--sync', 'sync snippets' do
96
- @options[:command] = 'sync'
97
- end
98
- opts.on '-r', '--run SNIPPET_NAMES', '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|
99
- @options[:snippet_names] = snippet_names.split(',').map(&:strip)
100
- end
101
- opts.on '-v', '--version', 'show this version' do
102
- puts Core::VERSION
103
- exit
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.instance.set :path, paths.first || Dir.pwd
129
+ Core::Configuration.path = paths.first || Dir.pwd
108
130
  if @options[:skip_file_patterns] && !@options[:skip_file_patterns].empty?
109
- skip_files = @options[:skip_file_patterns].map { |file_pattern|
110
- full_file_pattern = File.join(Core::Configuration.instance.get(:path), file_pattern)
111
- Dir.glob(full_file_pattern)
112
- }.flatten
113
- Core::Configuration.instance.set :skip_files, skip_files
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| eval(File.read(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 snippet_path =~ /^http/
145
+ if /^http/.match?(snippet_path)
123
146
  uri = URI.parse snippet_path
124
147
  eval(uri.read)
125
148
  else
126
- eval(File.read(snippet_path))
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 "There is no snippet under ~/.synvert, please run `synvert --sync` to fetch snippets."
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, rewriter|
142
- puts " " + name
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 "To open a synvert snippet, set $EDITOR or $SYNVERT_EDITOR" unless editor
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, rewriter|
168
- puts " " + name
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, rewriter|
173
- puts " " + name if name.include?(@options[:query])
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 "=" * 80
234
+ puts '=' * 80
190
235
  puts "snippet: #{sub_rewriter.name}"
191
- puts "=" * 80
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 "synvert snippets are synced"
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
- Core::Configuration.instance.get :default_snippets_path
303
+ File.join(ENV['HOME'], '.synvert')
211
304
  end
212
305
  end
213
306
  end
@@ -1,24 +1,28 @@
1
- # coding: utf-8
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 self.sync
10
- snippets_path = Core::Configuration.instance.get :default_snippets_path
11
- if File.exist?(snippets_path)
12
- FileUtils.cd snippets_path
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
@@ -1,5 +1,5 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Synvert
4
- VERSION = "0.9.0"
4
+ VERSION = '0.12.0'
5
5
  end
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,6 @@
1
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
4
 
3
5
  require 'synvert'
4
6
  require 'webmock/rspec'
@@ -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
- describe "sync" do
6
- let(:default_snippets_path) { File.join(File.dirname(__FILE__), '.synvert') }
7
- before { Core::Configuration.instance.set :default_snippets_path, default_snippets_path }
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
- it 'git clones snippets' do
11
- expect(Snippet).to receive(:system).with("git clone https://github.com/xinminlabs/synvert-snippets.git #{default_snippets_path}")
12
- Snippet.sync
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
- it 'git pull snippets' do
16
- FileUtils.mkdir default_snippets_path
17
- expect(Snippet).to receive(:system).with("git pull --rebase")
18
- Snippet.sync
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
- describe "fetch_core_version" do
23
- it 'gets remote version' do
24
- stub_request(:get, "https://rubygems.org/api/v1/versions/synvert-core.json").
25
- to_return(:body => '[{"number":"0.4.2"}]')
26
- expect(Snippet.fetch_core_version).to eq "0.4.2"
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
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
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 = "synvert"
8
+ spec.name = 'synvert'
8
9
  spec.version = Synvert::VERSION
9
- spec.authors = ["Richard Huang"]
10
- spec.email = ["flyerhzm@gmail.com"]
11
- spec.description = %q{synvert is used to convert ruby code to better syntax.}
12
- spec.summary = %q{synvert = syntax + convert.}
13
- spec.homepage = "https://github.com/xinminlabs/synvert"
14
- spec.license = "MIT"
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 = ["lib"]
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 "synvert-core", ">= 0.5.3"
23
+ spec.add_runtime_dependency 'synvert-core', '>= 0.20.1'
22
24
 
23
- spec.add_development_dependency "bundler", "~> 1.3"
24
- spec.add_development_dependency "rake"
25
- spec.add_development_dependency "rspec"
26
- spec.add_development_dependency "webmock"
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.9.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: 2015-10-23 00:00:00.000000000 Z
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.5.3
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.5.3
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: '1.3'
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: '1.3'
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
- rubyforge_project:
127
- rubygems_version: 2.4.5.1
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: