synvert 0.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4aefc7425f57552493435e868b3bbaae081a97ba
4
+ data.tar.gz: d679d3dd07f996bf238f540a842c9f99a758d7d4
5
+ SHA512:
6
+ metadata.gz: b213405f6988e2041a4e087128319ed1cc5fead180dc58a269f6852c426f50b5bb5b322fc93839a2055d6d5f01809086ba6bd3d95052c47fcf64396af60bc6bc
7
+ data.tar.gz: 630fbc831d76015d8ca0ea2ff958a87efab5a7be7ff5afd1d9d3a3a766039ad5ad59d67c8be6b7f969f48e96dff58cc65e28499ba5eea3ba00845716026e1f5d
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format documentation
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in synvert.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Richard Huang
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,29 @@
1
+ # Synvert
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'synvert'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install synvert
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ $LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__))
5
+ require 'synvert'
6
+ require 'synvert/cli'
7
+
8
+ result = Synvert::CLI.run
9
+ exit(result ? 0 : 1)
@@ -0,0 +1,14 @@
1
+ # coding: utf-8
2
+ require "synvert/version"
3
+ require 'parser'
4
+ require 'parser/current'
5
+ require 'ast'
6
+
7
+ module Synvert
8
+ autoload :BaseConverter, 'synvert/base_converter'
9
+ autoload :CheckingVisitor, 'synvert/checking_visitor'
10
+ autoload :SexpHelper, 'synvert/sexp_helper'
11
+ module FactoryGirl
12
+ autoload :SyntaxMethodsConverter, 'synvert/factory_girl/syntax_methods_converter'
13
+ end
14
+ end
@@ -0,0 +1,36 @@
1
+ # coding: utf-8
2
+
3
+ module Synvert
4
+ class BaseConverter < Parser::Rewriter
5
+ include AST::Sexp
6
+ include SexpHelper
7
+
8
+ attr_reader :filename
9
+
10
+ def rewrite(source_buffer, ast)
11
+ @filename = source_buffer.name
12
+
13
+ new_ast = AST::Node.new(:program, [ast])
14
+ super(source_buffer, new_ast)
15
+ end
16
+
17
+ def append_to(node, content)
18
+ if node.children.last
19
+ indent = indent(node.children.last)
20
+ insert_after node.children.last.loc.expression, "\n#{' '*indent}#{content}"
21
+ else
22
+ indent = indent(node) + 2
23
+ insert_after node.children.first.loc.expression, "\n#{' '*indent}#{content}"
24
+ end
25
+ end
26
+
27
+ def append_after(node, content)
28
+ indent = indent(node)
29
+ insert_after node.loc.expression, "\n#{' '*indent}#{content}"
30
+ end
31
+
32
+ def indent(node)
33
+ node.loc.expression.column
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,37 @@
1
+ # coding: utf-8
2
+ module Synvert
3
+ class CheckingVisitor
4
+ attr_reader :converters
5
+
6
+ def initialize(options={})
7
+ @converters = options[:converters] || [
8
+ Synvert::FactoryGirl::SyntaxMethodsConverter.new
9
+ ]
10
+ end
11
+
12
+ def convert_file(filename)
13
+ source = File.read filename
14
+ converted_source = convert(filename, source)
15
+ if source != converted_source
16
+ File.write(filename, converted_source)
17
+ end
18
+ end
19
+
20
+ def convert(filename, source)
21
+ source_buffer = Parser::Source::Buffer.new filename
22
+ source_buffer.source = source
23
+
24
+ parser = Parser::CurrentRuby.new
25
+ ast = parser.parse source_buffer
26
+
27
+ converted_source = source
28
+ @converters.each do |converter|
29
+ if Array(converter.interesting_files).any? { |file_pattern| filename =~ file_pattern }
30
+ converted_source = converter.rewrite(source_buffer, ast)
31
+ end
32
+ end
33
+
34
+ converted_source
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ require 'find'
3
+
4
+ module Synvert
5
+ class CLI
6
+ def self.run
7
+ new.run
8
+ end
9
+
10
+ def initialize
11
+ @checking_visitor = CheckingVisitor.new
12
+ end
13
+
14
+ def run
15
+ Find.find(".") do |path|
16
+ if FileTest.directory?(path)
17
+ next
18
+ else
19
+ @checking_visitor.convert_file(path) if path =~ /\.rb$/
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,49 @@
1
+ # coding: utf-8
2
+
3
+ module Synvert
4
+ module FactoryGirl
5
+ class SyntaxMethodsConverter < BaseConverter
6
+ def interesting_files
7
+ [/spec\/spec_helper\.rb/, /spec\/support\/.*\.rb/, /spec\/.*_spec\.rb/] +
8
+ [/test\/test_helper\.rb/, /test\/support\/.*\.rb/, /test\/.*_test\.rb/] +
9
+ [/features\/support\/env\.rb/, /features\/.*\.rb/]
10
+ end
11
+
12
+ def on_class(node)
13
+ if (name(node) == to_ast("ActiveSupport::TestCase") || name(node) == to_ast("Test::Unit::TestCase")) &&
14
+ !contains_statement?(body(node), "include FactoryGirl::Syntax::Methods")
15
+ append_to node, "include FactoryGirl::Syntax::Methods"
16
+ end
17
+
18
+ super
19
+ end
20
+
21
+ def on_block(node)
22
+ if receiver(node) == to_ast("RSpec") &&
23
+ message(node) == :configure &&
24
+ !contains_statement?(body(node), "config.include FactoryGirl::Syntax::Methods")
25
+ append_to node, "config.include FactoryGirl::Syntax::Methods"
26
+ end
27
+
28
+ super
29
+ end
30
+
31
+ def on_send(node)
32
+ if receiver(node) == to_ast("FactoryGirl") &&
33
+ [:create, :build, :attributes_for, :build_stubbed, :create_list, :build_list, :create_pair, :build_pair].include?(message(node))
34
+ replace node.loc.expression.resize("FactoryGirl.".size), ''
35
+ end
36
+
37
+ super
38
+ end
39
+
40
+ def on_program(node)
41
+ if filename == "features/support/env.rb" && !contains_statement?(node, "World(FactoryGirl::Syntax::Methods)")
42
+ append_after node.children[0], "World(FactoryGirl::Syntax::Methods)"
43
+ end
44
+
45
+ node.updated(nil, process_all(node))
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,51 @@
1
+ module Synvert
2
+ module SexpHelper
3
+ def name(node)
4
+ case node.type
5
+ when :class
6
+ node.children[0]
7
+ else
8
+ end
9
+ end
10
+
11
+ def body(node)
12
+ case node.type
13
+ when :class
14
+ node.children[1]
15
+ when :block
16
+ node.children[2]
17
+ else
18
+ end
19
+ end
20
+
21
+ def receiver(node)
22
+ case node.type
23
+ when :send
24
+ node.children[0]
25
+ when :block
26
+ receiver(node.children[0])
27
+ else
28
+ end
29
+ end
30
+
31
+ def message(node)
32
+ case node.type
33
+ when :send
34
+ node.children[1]
35
+ when :block
36
+ message(node.children[0])
37
+ else
38
+ end
39
+ end
40
+
41
+ def contains_statement?(node, statement)
42
+ node && (node.type == :begin ? node.children : [node]).any? { |child_node|
43
+ child_node == to_ast(statement)
44
+ }
45
+ end
46
+
47
+ def to_ast(str)
48
+ Parser::CurrentRuby.parse(str)
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,5 @@
1
+ # coding: utf-8
2
+
3
+ module Synvert
4
+ VERSION = "0.0.1"
5
+ end
@@ -0,0 +1,17 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+
3
+ require 'synvert'
4
+
5
+ Dir[File.join(File.dirname(__FILE__), 'support', '*')].each do |path|
6
+ require path
7
+ end
8
+
9
+ require 'mocha/api'
10
+
11
+ RSpec.configure do |config|
12
+ config.treat_symbols_as_metadata_keys_with_true_values = true
13
+ config.run_all_when_everything_filtered = true
14
+ config.filter_run :focus
15
+
16
+ config.order = 'random'
17
+ end
@@ -0,0 +1,41 @@
1
+ # coding: utf-8
2
+
3
+ shared_context "expect to convert" do
4
+ it "expects to convert" do
5
+ converter = described_class.new
6
+ source_buffer = Parser::Source::Buffer.new filename
7
+ source_buffer.source = source
8
+
9
+ parser = Parser::CurrentRuby.new
10
+ ast = parser.parse source_buffer
11
+
12
+ expect(converter.rewrite(source_buffer, ast)).to eq expected_source
13
+ end
14
+ end
15
+
16
+ shared_context "not expect to convert" do
17
+ it "does not expect to convert" do
18
+ converter = described_class.new
19
+ source_buffer = Parser::Source::Buffer.new filename
20
+ source_buffer.source = source
21
+
22
+ parser = Parser::CurrentRuby.new
23
+ ast = parser.parse source_buffer
24
+
25
+ expect(converter.rewrite(source_buffer, ast)).to eq source
26
+ end
27
+ end
28
+
29
+ shared_context "interesting file" do
30
+ it "interests file" do
31
+ converter = described_class.new
32
+ expect(converter.interesting_files.any? { |file_pattern| filename =~ file_pattern }).to eq true
33
+ end
34
+ end
35
+
36
+ shared_context "not interesting file" do
37
+ it "does not interest file" do
38
+ converter = described_class.new
39
+ expect(converter.interesting_files.none? { |file_pattern| filename =~ file_pattern }).to eq true
40
+ end
41
+ end
File without changes
@@ -0,0 +1,42 @@
1
+ # coding: utf-8
2
+ require 'spec_helper'
3
+
4
+ module Synvert
5
+ describe CheckingVisitor do
6
+ subject { CheckingVisitor.new }
7
+
8
+ context "initialize" do
9
+ it "factory_girl syntax methods converter is one of default converts" do
10
+ expect(subject.converters.first).is_a? FactoryGirl::SyntaxMethodsConverter
11
+ end
12
+ end
13
+
14
+ context "#convert_file" do
15
+ it "writes converted source" do
16
+ File.expects(:read).with('test.rb').returns('source')
17
+ subject.expects(:convert).with('test.rb', 'source').returns('converted source')
18
+ File.expects(:write).with('test.rb', 'converted source')
19
+ subject.convert_file 'test.rb'
20
+ end
21
+
22
+ it "doesn't write if converted source is same to source" do
23
+ File.expects(:read).with('test.rb').returns('source')
24
+ subject.expects(:convert).with('test.rb', 'source').returns('source')
25
+ File.expects(:write).never
26
+ subject.convert_file 'test.rb'
27
+ end
28
+ end
29
+
30
+ context "#convert" do
31
+ it "gets converted source" do
32
+ subject.converters.first.stubs(:rewrite).returns("converted source")
33
+ expect(subject.convert("spec/spec_helper.rb", "source")).to eq "converted source"
34
+ end
35
+
36
+ it "gets source if none of converter works" do
37
+ subject.converters.first.stubs(:rewrite).returns("converted source")
38
+ expect(subject.convert("(string)", "source")).to eq "source"
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,148 @@
1
+ # coding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Synvert::FactoryGirl::SyntaxMethodsConverter do
5
+ describe "#interesting_files" do
6
+ ["spec/spec_helper.rb", "test/test_helper.rb", "features/support/env.rb",
7
+ "spec/support/shared_context.rb", "test/support/shared_context.rb",
8
+ "spec/models/post_spec.rb", "test/unit/post_test.rb", "features/step_definitions/post_steps.rb"].each do |file_path|
9
+ context file_path do
10
+ let(:filename) { file_path }
11
+ include_context "interesting file"
12
+ end
13
+ end
14
+
15
+ context "app/models/post.rb" do
16
+ let(:filename) { "app/models/post.rb" }
17
+ include_context "not interesting file"
18
+ end
19
+ end
20
+
21
+ context "spec_helper.rb" do
22
+ let(:filename) { "spec/spec_helper.rb" }
23
+ let(:source) {
24
+ <<-EOF
25
+ RSpec.configure do |config|
26
+ config.include EmailSpec::Helpers
27
+ end
28
+ EOF
29
+ }
30
+ let(:expected_source) {
31
+ <<-EOF
32
+ RSpec.configure do |config|
33
+ config.include EmailSpec::Helpers
34
+ config.include FactoryGirl::Syntax::Methods
35
+ end
36
+ EOF
37
+ }
38
+ include_context "expect to convert"
39
+ end
40
+
41
+ context "test_helper.rb" do
42
+ context "Test::Unit::TestCase" do
43
+ let(:filename) { "test/test_helper.rb" }
44
+ let(:source) {
45
+ <<-EOF
46
+ class Test::Unit::TestCase
47
+ end
48
+ EOF
49
+ }
50
+ let(:expected_source) {
51
+ <<-EOF
52
+ class Test::Unit::TestCase
53
+ include FactoryGirl::Syntax::Methods
54
+ end
55
+ EOF
56
+ }
57
+ include_context "expect to convert"
58
+ end
59
+
60
+ context "ActiveSupport::TestCase" do
61
+ let(:filename) { "test/test_helper.rb" }
62
+ let(:source) {
63
+ <<-EOF
64
+ class ActiveSupport::TestCase
65
+ include EmailSpec::Helpers
66
+ end
67
+ EOF
68
+ }
69
+ let(:expected_source) {
70
+ <<-EOF
71
+ class ActiveSupport::TestCase
72
+ include EmailSpec::Helpers
73
+ include FactoryGirl::Syntax::Methods
74
+ end
75
+ EOF
76
+ }
77
+ include_context "expect to convert"
78
+ end
79
+ end
80
+
81
+ context "features/support/env.rb" do
82
+ let(:filename) { "features/support/env.rb" }
83
+ let(:source) {
84
+ <<-EOF
85
+ require 'cucumber/rails'
86
+ EOF
87
+ }
88
+ let(:expected_source) {
89
+ <<-EOF
90
+ require 'cucumber/rails'
91
+ World(FactoryGirl::Syntax::Methods)
92
+ EOF
93
+ }
94
+ include_context "expect to convert"
95
+ end
96
+
97
+ [:create, :build, :attributes_for, :build_stubbed].each do |method|
98
+ class_eval do
99
+ context "FactoryGirl.#{method}" do
100
+ let(:filename) { "spec/models/post_spec.rb" }
101
+ let(:source) {
102
+ <<-EOF
103
+ it "valids post" do
104
+ post = FactoryGirl.#{method}(:post)
105
+ expect(post).to be_valid
106
+ end
107
+ EOF
108
+ }
109
+ let(:expected_source) {
110
+ <<-EOF
111
+ it "valids post" do
112
+ post = #{method}(:post)
113
+ expect(post).to be_valid
114
+ end
115
+ EOF
116
+ }
117
+
118
+ include_context "expect to convert"
119
+ end
120
+ end
121
+ end
122
+
123
+ [:create_list, :build_list, :create_pair, :build_pair].each do |method|
124
+ class_eval do
125
+ context "FactoryGirl.#{method}" do
126
+ let(:filename) { "spec/models/post_spec.rb" }
127
+ let(:source) {
128
+ <<-EOF
129
+ it "valids posts" do
130
+ posts = FactoryGirl.#{method}(:post)
131
+ expect(posts).to be_valid
132
+ end
133
+ EOF
134
+ }
135
+ let(:expected_source) {
136
+ <<-EOF
137
+ it "valids posts" do
138
+ posts = #{method}(:post)
139
+ expect(posts).to be_valid
140
+ end
141
+ EOF
142
+ }
143
+
144
+ include_context "expect to convert"
145
+ end
146
+ end
147
+ end
148
+ end
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'synvert/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "synvert"
8
+ 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 = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_runtime_dependency "parser"
22
+
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 "mocha"
27
+ end
metadata ADDED
@@ -0,0 +1,140 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: synvert
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Richard Huang
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: parser
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: mocha
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: synvert is used to convert ruby code to better syntax.
84
+ email:
85
+ - flyerhzm@gmail.com
86
+ executables:
87
+ - synvert
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - ".gitignore"
92
+ - ".rspec"
93
+ - Gemfile
94
+ - LICENSE.txt
95
+ - README.md
96
+ - Rakefile
97
+ - bin/synvert
98
+ - lib/synvert.rb
99
+ - lib/synvert/base_converter.rb
100
+ - lib/synvert/checking_visitor.rb
101
+ - lib/synvert/cli.rb
102
+ - lib/synvert/factory_girl/syntax_methods_converter.rb
103
+ - lib/synvert/sexp_helper.rb
104
+ - lib/synvert/version.rb
105
+ - spec/spec_helper.rb
106
+ - spec/support/shared_context.rb
107
+ - spec/synvert/base_converter_spec.rb
108
+ - spec/synvert/checking_visitor_spec.rb
109
+ - spec/synvert/factory_girl/syntax_methods_converter_spec.rb
110
+ - synvert.gemspec
111
+ homepage: ''
112
+ licenses:
113
+ - MIT
114
+ metadata: {}
115
+ post_install_message:
116
+ rdoc_options: []
117
+ require_paths:
118
+ - lib
119
+ required_ruby_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ required_rubygems_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
129
+ requirements: []
130
+ rubyforge_project:
131
+ rubygems_version: 2.2.0.rc.1
132
+ signing_key:
133
+ specification_version: 4
134
+ summary: synvert = syntax + convert.
135
+ test_files:
136
+ - spec/spec_helper.rb
137
+ - spec/support/shared_context.rb
138
+ - spec/synvert/base_converter_spec.rb
139
+ - spec/synvert/checking_visitor_spec.rb
140
+ - spec/synvert/factory_girl/syntax_methods_converter_spec.rb