synvert 0.9.0 → 0.10.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 +4 -3
- data/CHANGELOG.md +4 -1
- data/README.md +4 -4
- data/Rakefile +1 -1
- data/lib/synvert.rb +1 -1
- data/lib/synvert/cli.rb +20 -22
- data/lib/synvert/snippet.rb +12 -9
- data/lib/synvert/version.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/synvert/snippet_spec.rb +13 -12
- data/synvert.gemspec +13 -13
- 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: 430688d602830d6cbccecf277a580969288b875e992dc1447eb108a7ebd0726c
|
4
|
+
data.tar.gz: 6ea78cce8187cea7470bbc043978b318a4f0bd608bf13124cb9ec5f75917fe37
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dad3de4c88092bba08138b0b64d70e92fa33ca2d8d4d7acea22d7b5e468e48fb2b08b8531832c985b03f5a4b6c2e0fda5f5aa415aae204c414fc5d14d18646c1
|
7
|
+
data.tar.gz: e500c57544648cb230f43e52658d58c36bde8a13f052c5e66441fc3471c43e867c8693a0b4fde23a9a9c6c69eae28c0d174ef5ddedec499ff6594a676b0beece
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
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/lib/synvert.rb
CHANGED
data/lib/synvert/cli.rb
CHANGED
@@ -15,8 +15,6 @@ module Synvert
|
|
15
15
|
# Initialize a CLI.
|
16
16
|
def initialize
|
17
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')
|
20
18
|
end
|
21
19
|
|
22
20
|
# Run the CLI.
|
@@ -39,14 +37,14 @@ module Synvert
|
|
39
37
|
show_rewriter
|
40
38
|
when 'sync'
|
41
39
|
sync_snippets
|
42
|
-
else
|
40
|
+
else # run
|
43
41
|
load_rewriters
|
44
42
|
@options[:snippet_names].each do |snippet_name|
|
45
43
|
puts "===== #{snippet_name} started ====="
|
46
44
|
group, name = snippet_name.split('/')
|
47
45
|
rewriter = Core::Rewriter.call group, name
|
48
46
|
rewriter.warnings.each do |warning|
|
49
|
-
puts
|
47
|
+
puts '[Warn] ' + warning.message
|
50
48
|
end
|
51
49
|
puts rewriter.todo if rewriter.todo
|
52
50
|
puts "===== #{snippet_name} done ====="
|
@@ -70,7 +68,7 @@ module Synvert
|
|
70
68
|
# Run OptionParser to parse arguments.
|
71
69
|
def run_option_parser(args)
|
72
70
|
optparse = OptionParser.new do |opts|
|
73
|
-
opts.banner =
|
71
|
+
opts.banner = 'Usage: synvert [project_path]'
|
74
72
|
opts.on '-d', '--load SNIPPET_PATHS', 'load custom snippets, snippet paths can be local file path or remote http url' do |snippet_paths|
|
75
73
|
@options[:custom_snippet_paths] = snippet_paths.split(',').map(&:strip)
|
76
74
|
end
|
@@ -104,26 +102,26 @@ module Synvert
|
|
104
102
|
end
|
105
103
|
end
|
106
104
|
paths = optparse.parse(args)
|
107
|
-
Core::Configuration.
|
105
|
+
Core::Configuration.path = paths.first || Dir.pwd
|
108
106
|
if @options[:skip_file_patterns] && !@options[:skip_file_patterns].empty?
|
109
|
-
skip_files = @options[:skip_file_patterns].map
|
110
|
-
full_file_pattern = File.join(Core::Configuration.
|
107
|
+
skip_files = @options[:skip_file_patterns].map do |file_pattern|
|
108
|
+
full_file_pattern = File.join(Core::Configuration.path, file_pattern)
|
111
109
|
Dir.glob(full_file_pattern)
|
112
|
-
|
113
|
-
Core::Configuration.
|
110
|
+
end.flatten
|
111
|
+
Core::Configuration.skip_files = skip_files
|
114
112
|
end
|
115
113
|
end
|
116
114
|
|
117
115
|
# Load all rewriters.
|
118
116
|
def load_rewriters
|
119
|
-
Dir.glob(File.join(default_snippets_path, 'lib/**/*.rb')).each { |file|
|
117
|
+
Dir.glob(File.join(default_snippets_path, 'lib/**/*.rb')).each { |file| require file }
|
120
118
|
|
121
119
|
@options[:custom_snippet_paths].each do |snippet_path|
|
122
120
|
if snippet_path =~ /^http/
|
123
121
|
uri = URI.parse snippet_path
|
124
122
|
eval(uri.read)
|
125
123
|
else
|
126
|
-
|
124
|
+
require snippet_path
|
127
125
|
end
|
128
126
|
end
|
129
127
|
rescue
|
@@ -134,12 +132,12 @@ module Synvert
|
|
134
132
|
# List and print all available rewriters.
|
135
133
|
def list_available_rewriters
|
136
134
|
if Core::Rewriter.availables.empty?
|
137
|
-
puts
|
135
|
+
puts 'There is no snippet under ~/.synvert, please run `synvert --sync` to fetch snippets.'
|
138
136
|
else
|
139
137
|
Core::Rewriter.availables.each do |group, rewriters|
|
140
138
|
puts group
|
141
139
|
rewriters.each do |name, rewriter|
|
142
|
-
puts
|
140
|
+
puts ' ' + name
|
143
141
|
end
|
144
142
|
end
|
145
143
|
puts
|
@@ -149,7 +147,7 @@ module Synvert
|
|
149
147
|
# Open one rewriter.
|
150
148
|
def open_rewriter
|
151
149
|
editor = [ENV['SYNVERT_EDITOR'], ENV['EDITOR']].find { |e| !e.nil? && !e.empty? }
|
152
|
-
return puts
|
150
|
+
return puts 'To open a synvert snippet, set $EDITOR or $SYNVERT_EDITOR' unless editor
|
153
151
|
|
154
152
|
path = File.expand_path(File.join(default_snippets_path, "lib/#{@options[:snippet_name]}.rb"))
|
155
153
|
if File.exist? path
|
@@ -165,12 +163,12 @@ module Synvert
|
|
165
163
|
if group.include? @options[:query]
|
166
164
|
puts group
|
167
165
|
rewriters.each do |name, rewriter|
|
168
|
-
puts
|
166
|
+
puts ' ' + name
|
169
167
|
end
|
170
168
|
elsif rewriters.keys.any? { |name| name.include? @options[:query] }
|
171
169
|
puts group
|
172
170
|
rewriters.each do |name, rewriter|
|
173
|
-
puts
|
171
|
+
puts ' ' + name if name.include?(@options[:query])
|
174
172
|
end
|
175
173
|
end
|
176
174
|
end
|
@@ -186,9 +184,9 @@ module Synvert
|
|
186
184
|
puts rewriter.description
|
187
185
|
rewriter.sub_snippets.each do |sub_rewriter|
|
188
186
|
puts
|
189
|
-
puts
|
187
|
+
puts '=' * 80
|
190
188
|
puts "snippet: #{sub_rewriter.name}"
|
191
|
-
puts
|
189
|
+
puts '=' * 80
|
192
190
|
puts sub_rewriter.description
|
193
191
|
end
|
194
192
|
else
|
@@ -198,8 +196,8 @@ module Synvert
|
|
198
196
|
|
199
197
|
# sync snippets
|
200
198
|
def sync_snippets
|
201
|
-
Snippet.sync
|
202
|
-
puts
|
199
|
+
Snippet.new(default_snippets_path).sync
|
200
|
+
puts 'synvert snippets are synced'
|
203
201
|
core_version = Snippet.fetch_core_version
|
204
202
|
if Gem::Version.new(core_version) > Gem::Version.new(Synvert::Core::VERSION)
|
205
203
|
puts "synvert-core is updated, please install synvert-core #{core_version}"
|
@@ -207,7 +205,7 @@ module Synvert
|
|
207
205
|
end
|
208
206
|
|
209
207
|
def default_snippets_path
|
210
|
-
|
208
|
+
File.join(ENV['HOME'], '.synvert')
|
211
209
|
end
|
212
210
|
end
|
213
211
|
end
|
data/lib/synvert/snippet.rb
CHANGED
@@ -5,20 +5,23 @@ require 'json'
|
|
5
5
|
module Synvert
|
6
6
|
# Manage synvert snippets.
|
7
7
|
class Snippet
|
8
|
+
def initialize(snippets_path)
|
9
|
+
@snippets_path = snippets_path
|
10
|
+
end
|
11
|
+
|
8
12
|
# synchronize snippets from github.
|
9
|
-
def
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
system("git pull --rebase")
|
13
|
+
def sync
|
14
|
+
if File.exist?(@snippets_path)
|
15
|
+
FileUtils.cd @snippets_path
|
16
|
+
Kernel.system('git pull --rebase')
|
14
17
|
else
|
15
|
-
system("git clone https://github.com/xinminlabs/synvert-snippets.git #{snippets_path}")
|
18
|
+
Kernel.system("git clone https://github.com/xinminlabs/synvert-snippets.git #{@snippets_path}")
|
16
19
|
end
|
17
20
|
end
|
18
21
|
|
19
|
-
def
|
20
|
-
content = open(
|
21
|
-
JSON.parse(content).first[
|
22
|
+
def fetch_core_version
|
23
|
+
content = URI.open('https://rubygems.org/api/v1/versions/synvert-core.json').read
|
24
|
+
JSON.parse(content).first['number']
|
22
25
|
end
|
23
26
|
end
|
24
27
|
end
|
data/lib/synvert/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -2,28 +2,29 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module Synvert
|
4
4
|
describe Snippet do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
after { FileUtils.rm_rf default_snippets_path }
|
5
|
+
let(:snippets_path) { File.join(File.dirname(__FILE__), '.synvert') }
|
6
|
+
let(:snippet) { Snippet.new(snippets_path) }
|
7
|
+
after { FileUtils.rmdir(snippets_path) if File.exist?(snippets_path) }
|
9
8
|
|
9
|
+
describe 'sync' do
|
10
10
|
it 'git clones snippets' do
|
11
|
-
expect(
|
12
|
-
|
11
|
+
expect(Kernel).to receive(:system).with("git clone https://github.com/xinminlabs/synvert-snippets.git #{snippets_path}")
|
12
|
+
snippet.sync
|
13
13
|
end
|
14
14
|
|
15
15
|
it 'git pull snippets' do
|
16
|
-
FileUtils.mkdir
|
17
|
-
expect(
|
18
|
-
|
16
|
+
FileUtils.mkdir snippets_path
|
17
|
+
expect(Kernel).to receive(:system).with('git pull --rebase')
|
18
|
+
snippet.sync
|
19
|
+
FileUtils.cd File.dirname(__FILE__)
|
19
20
|
end
|
20
21
|
end
|
21
22
|
|
22
|
-
describe
|
23
|
+
describe 'fetch_core_version' do
|
23
24
|
it 'gets remote version' do
|
24
|
-
stub_request(:get,
|
25
|
+
stub_request(:get, 'https://rubygems.org/api/v1/versions/synvert-core.json').
|
25
26
|
to_return(:body => '[{"number":"0.4.2"}]')
|
26
|
-
expect(
|
27
|
+
expect(snippet.fetch_core_version).to eq '0.4.2'
|
27
28
|
end
|
28
29
|
end
|
29
30
|
end
|
data/synvert.gemspec
CHANGED
@@ -4,24 +4,24 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'synvert/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'synvert'
|
8
8
|
spec.version = Synvert::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.description =
|
12
|
-
spec.summary =
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
9
|
+
spec.authors = ['Richard Huang']
|
10
|
+
spec.email = ['flyerhzm@gmail.com']
|
11
|
+
spec.description = 'synvert is used to convert ruby code to better syntax.'
|
12
|
+
spec.summary = 'synvert = syntax + convert.'
|
13
|
+
spec.homepage = 'https://github.com/xinminlabs/synvert'
|
14
|
+
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = [
|
19
|
+
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_runtime_dependency
|
21
|
+
spec.add_runtime_dependency 'synvert-core', '>= 0.19.0'
|
22
22
|
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
23
|
+
spec.add_development_dependency 'bundler'
|
24
|
+
spec.add_development_dependency 'rake'
|
25
|
+
spec.add_development_dependency 'rspec'
|
26
|
+
spec.add_development_dependency 'webmock'
|
27
27
|
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.10.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-02-07 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.19.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: 0.
|
26
|
+
version: 0.19.0
|
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:
|
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:
|