gemologist 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 1ad4c58188ebd11a82ae7dcd611aa3cf5aae8710
4
- data.tar.gz: 2e5832fa8760fb2fc4a0d324eab1e7fac2a4fc66
2
+ SHA256:
3
+ metadata.gz: cc0fa6a1c75bb0397c1c7dd2e0e1a4c9abe7935b8dccba8cc16de7f9b4b2793e
4
+ data.tar.gz: 0f0da21299fba4835c8485b319d81106f34669b424be218a958ae298a8a1e236
5
5
  SHA512:
6
- metadata.gz: 91c887591f986a9570e4941a88be7eae60bdefadd79fd7b5696a04150903dcd05be97523ab5ca92dec89ce2f09ab767cf0a9e8119bb7d0e7bb09f2aad9d565f5
7
- data.tar.gz: 295e57513526ce0408b470b6afd922dec0a11ac96cec9db074d023c0b6fe41b0a6756c5381a4f7956d81d42a7a21e6932bc662eaf3fae13f0c020644b985ac2b
6
+ metadata.gz: 03a3df8cf82ea50b924bbcecfc6c381a2183b9c2818c4a8324a92bc96795ac8e9a4812a3f5c98e0ecc77271db8719540bfaf1252e9e43e82a431aff97a804ada
7
+ data.tar.gz: fac491afcceb14e644e9feda02eed691b44c4e74a9943888243e248da6872c1e3d32bd420a848d0585fa3a3c6a985dfade67bf6f541841d1fdafc32bdddebbf8
@@ -1,12 +1,28 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ AllCops:
4
+ TargetRubyVersion: 2.3
5
+
6
+ Lint/BooleanSymbol:
7
+ Exclude:
8
+ - 'lib/gemologist/ast.rb'
9
+
10
+ Lint/InterpolationCheck:
11
+ Exclude:
12
+ - 'spec/gemologist/ast_spec.rb'
13
+
14
+ Metrics/BlockLength:
15
+ Exclude:
16
+ - 'spec/**/*'
17
+
1
18
  Metrics/ClassLength:
2
19
  Max: 150
3
20
 
4
21
  Metrics/LineLength:
5
22
  Max: 100
6
23
 
7
- Style/AlignHash:
8
- EnforcedHashRocketStyle: table
9
- EnforcedColonStyle: separator
24
+ Naming/HeredocDelimiterNaming:
25
+ Enabled: false
10
26
 
11
27
  Style/Documentation:
12
28
  Enabled: false
@@ -0,0 +1,7 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2018-09-15 17:25:05 +0900 using RuboCop version 0.59.1.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
@@ -1,14 +1,10 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
- - 2.0.0
5
- - 2.1
6
- - 2.2
7
- - ruby-head
8
- matrix:
9
- allow_failures:
10
- - rvm:
11
- - ruby-head
12
- script: bundle exec rake ci
3
+ - 2.3.7
4
+ - 2.4.4
5
+ - 2.5.1
6
+ - jruby-9.2.0.0
13
7
  sudo: false
14
8
  cache: bundler
9
+ before_install: gem update --system
10
+ script: bundle exec rake ci
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## Development
4
4
 
5
+ ## v0.3.0
6
+
7
+ * Drop support for Ruby 1.9.3 - 2.2.
8
+ * Use `parser` gem 2.5.0.0 or later.
9
+ * Handle deprecation message `Parser::Source::Rewriter is deprecated.` from `parser` gem.
10
+
5
11
  ## v0.2.1
6
12
 
7
13
  * Add missing `astrolabe` dependency definition.
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gemspec
@@ -7,7 +9,7 @@ group :development, :test do
7
9
  gem 'pry', '~> 0.10'
8
10
  gem 'rake', '~> 10.0'
9
11
  gem 'rspec', '~> 3.2'
10
- gem 'rubocop', '~> 0.30'
12
+ gem 'rubocop', '~> 0.52'
11
13
  end
12
14
 
13
15
  group :test do
data/README.md CHANGED
@@ -1,8 +1,7 @@
1
- [![Gem Version](http://img.shields.io/gem/v/gemologist.svg?style=flat)](http://badge.fury.io/rb/gemologist)
2
- [![Dependency Status](http://img.shields.io/gemnasium/yujinakayama/gemologist.svg?style=flat)](https://gemnasium.com/yujinakayama/gemologist)
1
+ [![Gem Version](https://badge.fury.io/rb/gemologist.svg)](http://badge.fury.io/rb/gemologist)
3
2
  [![Build Status](https://travis-ci.org/yujinakayama/gemologist.svg?branch=master&style=flat)](https://travis-ci.org/yujinakayama/gemologist)
4
- [![Coverage Status](https://coveralls.io/repos/yujinakayama/gemologist/badge.svg?branch=master)](https://coveralls.io/r/yujinakayama/gemologist?branch=master)
5
- [![Code Climate](https://img.shields.io/codeclimate/github/yujinakayama/gemologist.svg?style=flat)](https://codeclimate.com/github/yujinakayama/gemologist)
3
+ [![Coverage Status](https://coveralls.io/repos/yujinakayama/gemologist/badge.svg?branch=master&service=github)](https://coveralls.io/github/yujinakayama/gemologist?branch=master)
4
+ [![Code Climate](https://codeclimate.com/github/yujinakayama/gemologist/badges/gpa.svg)](https://codeclimate.com/github/yujinakayama/gemologist)
6
5
 
7
6
  # Gemologist
8
7
 
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rspec/core/rake_task'
3
5
  require 'rubocop/rake_task'
@@ -8,4 +10,4 @@ end
8
10
 
9
11
  RuboCop::RakeTask.new
10
12
 
11
- task ci: [:spec, :rubocop]
13
+ task ci: %i[spec rubocop]
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'bundler/setup'
4
5
  require 'gemologist'
@@ -1,5 +1,6 @@
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 'gemologist/version'
5
6
 
@@ -19,8 +20,9 @@ Gem::Specification.new do |spec|
19
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
21
  spec.require_paths = ['lib']
21
22
 
22
- spec.required_ruby_version = '>= 1.9.3'
23
+ spec.required_ruby_version = '>= 2.3'
23
24
 
24
25
  spec.add_runtime_dependency 'astrolabe', '~> 1.3'
25
26
  spec.add_runtime_dependency 'bundler', '~> 1.7'
27
+ spec.add_runtime_dependency 'parser', '>= 2.5.0.0'
26
28
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'gemologist/gemfile'
2
4
  require 'gemologist/gemfile_lock'
3
5
  require 'gemologist/gemspec'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'gemologist/ast'
2
4
 
3
5
  module Gemologist
@@ -6,16 +8,18 @@ module Gemologist
6
8
 
7
9
  def self.valid_node?(node)
8
10
  return false unless node.send_type?
11
+
9
12
  _receiver_node, message, name_node, = *node
10
13
  method_names.include?(message) && name_node.str_type?
11
14
  end
12
15
 
13
16
  def self.method_names
14
- fail NotImplementedError
17
+ raise NotImplementedError
15
18
  end
16
19
 
17
20
  def initialize(node, rewriter)
18
- fail 'Invalid node.' unless self.class.valid_node?(node)
21
+ raise 'Invalid node.' unless self.class.valid_node?(node)
22
+
19
23
  @node = node
20
24
  @rewriter = rewriter
21
25
  end
@@ -25,7 +29,7 @@ module Gemologist
25
29
  end
26
30
 
27
31
  def groups
28
- fail NotImplementedError
32
+ raise NotImplementedError
29
33
  end
30
34
 
31
35
  def version_specifiers
@@ -61,7 +65,7 @@ module Gemologist
61
65
  end
62
66
 
63
67
  def version_nodes
64
- fail NotImplementedError
68
+ raise NotImplementedError
65
69
  end
66
70
 
67
71
  def version_range
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'gemologist/ui'
2
4
  require 'astrolabe/builder'
3
5
  require 'parser/current'
@@ -17,6 +19,7 @@ module Gemologist
17
19
  def dependencies
18
20
  @dependencies ||= ast.each_node.with_object([]) do |node, dependencies|
19
21
  next unless dependency_class.valid_node?(node)
22
+
20
23
  dependencies << dependency_class.new(node, source_rewriter)
21
24
  end
22
25
  end
@@ -34,7 +37,7 @@ module Gemologist
34
37
  private
35
38
 
36
39
  def dependency_class
37
- fail NotImplementedError
40
+ raise NotImplementedError
38
41
  end
39
42
 
40
43
  def ast
@@ -46,7 +49,12 @@ module Gemologist
46
49
  end
47
50
 
48
51
  def source_rewriter
49
- @source_rewriter ||= Parser::Source::Rewriter.new(source_buffer)
52
+ @source_rewriter ||= Parser::Source::TreeRewriter.new(
53
+ source_buffer,
54
+ crossing_deletions: :accept,
55
+ different_replacements: :raise,
56
+ swallowed_insertions: :raise
57
+ )
50
58
  end
51
59
 
52
60
  def source_buffer
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'gemologist/runtime_value'
2
4
 
3
5
  module Gemologist
@@ -28,9 +30,10 @@ module Gemologist
28
30
  def concretize_regexp(regexp_node)
29
31
  *body_nodes, regopt_node = *regexp_node
30
32
  return RuntimeValue.new(regexp_node) unless body_nodes.all?(&:str_type?)
33
+
31
34
  string = body_nodes.map { |str_node| str_node.children.first }.reduce(:+)
32
35
  options = regopt_node.children.map(&:to_s).reduce(:+)
33
- eval("/#{string}/#{options}") # rubocop:disable Eval
36
+ eval("/#{string}/#{options}", binding, __FILE__, __LINE__) # rubocop:disable Eval
34
37
  end
35
38
 
36
39
  def concretize_array(array_node)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'gemologist/abstract_gemfile'
2
4
 
3
5
  module Gemologist
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'gemologist/abstract_dependency'
2
4
  require 'gemologist/util'
3
5
 
@@ -24,6 +26,7 @@ module Gemologist
24
26
 
25
27
  def groups_via_block
26
28
  return [] unless group_node
29
+
27
30
  _receiver_node, _message, *arg_nodes = *group_node
28
31
  arg_nodes.map { |node| AST.concretize(node) }
29
32
  end
@@ -40,7 +43,7 @@ module Gemologist
40
43
  def options_node
41
44
  node = trailing_nodes.last
42
45
 
43
- if node && node.hash_type?
46
+ if node&.hash_type?
44
47
  node
45
48
  else
46
49
  nil
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler'
2
4
 
3
5
  module Gemologist
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'gemologist/abstract_gemfile'
2
4
 
3
5
  module Gemologist
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'gemologist/abstract_dependency'
2
4
 
3
5
  module Gemologist
4
6
  class Gemspec
5
7
  class Dependency < AbstractDependency
6
- METHOD_NAMES = [:add_runtime_dependency, :add_development_dependency, :add_dependency].freeze
8
+ METHOD_NAMES = %i[add_runtime_dependency add_development_dependency add_dependency].freeze
7
9
 
8
10
  def self.method_names
9
11
  METHOD_NAMES
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gemologist
2
4
  class RuntimeValue
3
5
  attr_reader :node
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gemologist
2
4
  module UI
3
5
  module_function
4
6
 
5
7
  def deprecate(deprecated, options = {})
6
8
  message = "DEPRECATION: #{deprecated} is deprecated."
7
- message << " Use #{options[:replacement]} instead." if options[:replacement]
9
+ message += " Use #{options[:replacement]} instead." if options[:replacement]
8
10
  warn message
9
11
  end
10
12
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gemologist
2
4
  module Util
3
5
  module_function
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gemologist
2
4
  # http://semver.org/
3
5
  module Version
4
6
  MAJOR = 0
5
- MINOR = 2
6
- PATCH = 1
7
+ MINOR = 3
8
+ PATCH = 0
7
9
 
8
10
  def self.to_s
9
11
  [MAJOR, MINOR, PATCH].join('.')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gemologist
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuji Nakayama
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-06-29 00:00:00.000000000 Z
11
+ date: 2018-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: astrolabe
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.7'
41
+ - !ruby/object:Gem::Dependency
42
+ name: parser
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 2.5.0.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 2.5.0.0
41
55
  description: A library for rewriting your Gemfile and gemspec.
42
56
  email:
43
57
  - nkymyj@gmail.com
@@ -48,6 +62,7 @@ files:
48
62
  - ".gitignore"
49
63
  - ".rspec"
50
64
  - ".rubocop.yml"
65
+ - ".rubocop_todo.yml"
51
66
  - ".travis.yml"
52
67
  - CHANGELOG.md
53
68
  - Gemfile
@@ -82,7 +97,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
82
97
  requirements:
83
98
  - - ">="
84
99
  - !ruby/object:Gem::Version
85
- version: 1.9.3
100
+ version: '2.3'
86
101
  required_rubygems_version: !ruby/object:Gem::Requirement
87
102
  requirements:
88
103
  - - ">="
@@ -90,9 +105,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
105
  version: '0'
91
106
  requirements: []
92
107
  rubyforge_project:
93
- rubygems_version: 2.4.8
108
+ rubygems_version: 2.7.7
94
109
  signing_key:
95
110
  specification_version: 4
96
111
  summary: A library for rewriting your Gemfile and gemspec.
97
112
  test_files: []
98
- has_rdoc: