referral 0.0.5 → 0.0.6

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
2
  SHA256:
3
- metadata.gz: c5cdd1a3baacf145aeb660dbbcdc09a25a42514ae5b6fef5b1d7dc8edd111f0a
4
- data.tar.gz: b70e542db5e9a56623c2234ced091c083d15cc086068b4626efd1e90417ba1c8
3
+ metadata.gz: fbff70f9e9188e6af17f3bc5be2c2f144a3fce7eaf48dcb3cd67f7a860073ebc
4
+ data.tar.gz: f3b4e46e334bf865d84f517efc1b30d662f807eb27e02a44cd00bdc20619ba7d
5
5
  SHA512:
6
- metadata.gz: 2a654ca517d2add99189f286c81ee79cb0925b776be195245bd18405e72184be1b1f885aa131c5a32d9bf286d4971ed31d95bfbaf407dfb2a11927c979f56221
7
- data.tar.gz: 551e07877e433de2027d547cf8e20f9ddd26b63fcc41949e39fe395ccbca0b74fe882c344a45a7d4072190b76495b9be406073793af3e55536523b0d0e63b8c0
6
+ metadata.gz: de81b47bd2e9fbc0858d086e86b37429bd35be1bc6f6b54133c81bb014ea77e52cb3e47a01c28105042e21b3777dd3b7b613181f959660633af2f78a80c09d13
7
+ data.tar.gz: c450251c20c43d50d48f557ea18a7160cd1fb65dd38419a62f9d513b433361a150f848daa1992f52eb65b3f12e0839955afb502251b4ff7b41dce31ed4d7cf5f
@@ -0,0 +1,34 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: Ruby
9
+
10
+ on:
11
+ push:
12
+ branches: [ main ]
13
+ pull_request:
14
+ branches: [ main ]
15
+
16
+ jobs:
17
+ test:
18
+
19
+ runs-on: ubuntu-latest
20
+ strategy:
21
+ matrix:
22
+ ruby-version: ['2.7', '3.0', '3.3', '3.4', '4.0']
23
+
24
+ steps:
25
+ - uses: actions/checkout@v7
26
+ with:
27
+ fetch-depth: 0
28
+ - name: Set up Ruby
29
+ uses: ruby/setup-ruby@v1
30
+ with:
31
+ ruby-version: ${{ matrix.ruby-version }}
32
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
33
+ - name: Run tests
34
+ run: bundle exec rake
data/.standard.yml CHANGED
@@ -1,3 +1,4 @@
1
+ ruby_version: 2.7.0
1
2
  ignore:
2
3
  - "test/fixture/**/*"
3
4
 
data/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ # Changelog
2
+
3
+ ## 0.0.6
4
+
5
+ - Fixed `Token#id` output on Ruby 3.4+: Ruby 3.4 changed `Hash#inspect`'s
6
+ format, which had silently changed the `id` column's output (and the
7
+ sort order it ties into) on those newer versions. `id` now matches
8
+ what Ruby 2.7-3.3 have always produced.
data/Gemfile CHANGED
@@ -1,3 +1,7 @@
1
1
  source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
+
5
+ gem "rake"
6
+ gem "minitest"
7
+ gem "standard"
data/Gemfile.lock CHANGED
@@ -1,42 +1,66 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- referral (0.0.5)
4
+ referral (0.0.6)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- ast (2.4.0)
10
- jaro_winkler (1.5.3)
11
- minitest (5.11.3)
12
- parallel (1.17.0)
13
- parser (2.6.3.0)
14
- ast (~> 2.4.0)
15
- psych (3.1.0)
16
- rainbow (3.0.0)
17
- rake (12.3.2)
18
- rubocop (0.67.2)
19
- jaro_winkler (~> 1.5.1)
9
+ ast (2.4.3)
10
+ json (2.21.2)
11
+ language_server-protocol (3.17.0.6)
12
+ lint_roller (1.1.0)
13
+ minitest (5.26.1)
14
+ parallel (1.28.0)
15
+ parser (3.3.12.0)
16
+ ast (~> 2.4.1)
17
+ racc
18
+ prism (1.9.0)
19
+ racc (1.8.1)
20
+ rainbow (3.1.1)
21
+ rake (13.4.2)
22
+ regexp_parser (2.12.0)
23
+ rexml (3.4.4)
24
+ rubocop (1.64.1)
25
+ json (~> 2.3)
26
+ language_server-protocol (>= 3.17.0)
20
27
  parallel (~> 1.10)
21
- parser (>= 2.5, != 2.5.1.1)
22
- psych (>= 3.1.0)
28
+ parser (>= 3.3.0.2)
23
29
  rainbow (>= 2.2.2, < 4.0)
30
+ regexp_parser (>= 1.8, < 3.0)
31
+ rexml (>= 3.2.5, < 4.0)
32
+ rubocop-ast (>= 1.31.1, < 2.0)
24
33
  ruby-progressbar (~> 1.7)
25
- unicode-display_width (>= 1.4.0, < 1.6)
26
- ruby-progressbar (1.10.1)
27
- standard (0.0.41)
28
- rubocop (~> 0.67.1)
29
- unicode-display_width (1.5.0)
34
+ unicode-display_width (>= 2.4.0, < 3.0)
35
+ rubocop-ast (1.50.0)
36
+ parser (>= 3.3.7.2)
37
+ prism (~> 1.7)
38
+ rubocop-performance (1.21.1)
39
+ rubocop (>= 1.48.1, < 2.0)
40
+ rubocop-ast (>= 1.31.1, < 2.0)
41
+ ruby-progressbar (1.13.0)
42
+ standard (1.37.0)
43
+ language_server-protocol (~> 3.17.0.2)
44
+ lint_roller (~> 1.0)
45
+ rubocop (~> 1.64.0)
46
+ standard-custom (~> 1.0.0)
47
+ standard-performance (~> 1.4)
48
+ standard-custom (1.0.2)
49
+ lint_roller (~> 1.0)
50
+ rubocop (~> 1.50)
51
+ standard-performance (1.4.0)
52
+ lint_roller (~> 1.1)
53
+ rubocop-performance (~> 1.21.0)
54
+ unicode-display_width (2.6.0)
30
55
 
31
56
  PLATFORMS
32
57
  ruby
33
58
 
34
59
  DEPENDENCIES
35
- bundler (~> 1.17.3)
36
- minitest (~> 5.0)
37
- rake (~> 12.3)
60
+ minitest
61
+ rake
38
62
  referral!
39
63
  standard
40
64
 
41
65
  BUNDLED WITH
42
- 1.17.3
66
+ 2.4.22
@@ -4,7 +4,8 @@ module Referral
4
4
  class EnsuresWorkingRuby
5
5
  def call
6
6
  major, minor = RUBY_VERSION.split(".").map(&:to_i)
7
- unless major >= 3 || (major == 2 && minor >= 6)
7
+ supported = major >= 3 || (major == 2 && minor >= 6)
8
+ unless supported
8
9
  warn <<-ERROR.gsub(/^ {10}/, "")
9
10
  Error: referral must be run with Ruby 2.6 or later, but this is #{RUBY_VERSION}.
10
11
  You can often analyze older Ruby code by running this CLI with a newer
@@ -45,7 +45,7 @@ module Referral
45
45
  else
46
46
  token.arity.to_i == arity.to_i
47
47
  end
48
- },
48
+ }
49
49
  }
50
50
  class FiltersTokens
51
51
  def call(tokens, options)
@@ -45,7 +45,7 @@ module Referral
45
45
  },
46
46
  arity: ->(token) {
47
47
  token.arity
48
- },
48
+ }
49
49
 
50
50
  }
51
51
 
@@ -31,7 +31,7 @@ module Referral
31
31
 
32
32
  if (token = @translates_node_to_token.call(node, parent, file))
33
33
  @tokenizes_identifiers.call(node, token)
34
- [token, *find_tokens(node.children[1..-1], token, file)]
34
+ [token, *find_tokens(node.children[1..], token, file)]
35
35
  else
36
36
  find_tokens(node.children, parent, file)
37
37
  end
@@ -13,7 +13,7 @@ module Referral
13
13
  names = token.scope_and_names.map { |fq| fq.name.to_s }
14
14
  [
15
15
  *names.fill("", names.size...max_length),
16
- token.file, token.line, token.column, token.id,
16
+ token.file, token.line, token.column, token.id
17
17
  ]
18
18
  }
19
19
  },
@@ -21,7 +21,7 @@ module Referral
21
21
  tokens.sort_by do |token|
22
22
  [
23
23
  GitStore.time(token.file, token.line).to_i,
24
- token.file, token.line, token.column, token.id,
24
+ token.file, token.line, token.column, token.id
25
25
  ]
26
26
  end
27
27
  },
@@ -29,10 +29,10 @@ module Referral
29
29
  tokens.sort_by { |token|
30
30
  [
31
31
  -1 * GitStore.time(token.file, token.line).to_i,
32
- token.file, token.line, token.column, token.id,
32
+ token.file, token.line, token.column, token.id
33
33
  ]
34
34
  }
35
- },
35
+ }
36
36
  }
37
37
  class SortsTokens
38
38
  def call(tokens, options)
@@ -5,7 +5,7 @@ module Referral
5
5
  double_colon: "::",
6
6
  dot: ".",
7
7
  hash: "#",
8
- tilde: "~",
8
+ tilde: "~"
9
9
  }
10
10
  TOKEN_TYPES = {
11
11
  module: Value::NodeType.new(
@@ -15,7 +15,7 @@ module Referral
15
15
  token_type: :definition,
16
16
  reverse_identifiers: false,
17
17
  good_parent: true,
18
- name_finder: ->(node) { nil }
18
+ name_finder: ->(node) {}
19
19
  ),
20
20
  class: Value::NodeType.new(
21
21
  name: :class,
@@ -24,7 +24,7 @@ module Referral
24
24
  token_type: :definition,
25
25
  reverse_identifiers: false,
26
26
  good_parent: true,
27
- name_finder: ->(node) { nil }
27
+ name_finder: ->(node) {}
28
28
  ),
29
29
  constant_def: Value::NodeType.new(
30
30
  name: :constant_declaration,
@@ -183,6 +183,6 @@ module Referral
183
183
  reverse_identifiers: true,
184
184
  good_parent: false,
185
185
  name_finder: ->(node) { node.children[0] }
186
- ),
186
+ )
187
187
  }
188
188
  end
@@ -25,7 +25,7 @@ module Referral
25
25
 
26
26
  [
27
27
  *find_names(node.children.first, parent),
28
- @translates_node_to_token.call(node, parent, parent.file),
28
+ @translates_node_to_token.call(node, parent, parent.file)
29
29
  ].compact
30
30
  end
31
31
  end
@@ -19,7 +19,6 @@ module Referral
19
19
  :delimiter,
20
20
  keyword_init: true
21
21
  )
22
-
23
22
  def self.default(overrides = {})
24
23
  DEFAULT.merge({files: Dir["**/*.rb"]}.merge(overrides))
25
24
  end
@@ -29,7 +28,7 @@ module Referral
29
28
  delimiter: " ",
30
29
  include_unnamed: false,
31
30
  sort: "file",
32
- print_headers: false,
31
+ print_headers: false
33
32
  ).freeze
34
33
 
35
34
  def merge(new_opts)
@@ -6,11 +6,10 @@ module Referral
6
6
  :name, :identifiers, :node_type, :parent, :file, :line, :column, :arity,
7
7
  keyword_init: true
8
8
  )
9
-
10
9
  def scope_and_names
11
10
  [
12
11
  *parent&.scope_and_names,
13
- *literal_name_tokens,
12
+ *literal_name_tokens
14
13
  ].compact
15
14
  end
16
15
 
@@ -36,7 +35,7 @@ module Referral
36
35
  def full_name_tokens
37
36
  [
38
37
  *(include_parents_in_full_name? ? parent&.scope_and_names : []),
39
- *literal_name_tokens,
38
+ *literal_name_tokens
40
39
  ].compact
41
40
  end
42
41
 
@@ -57,11 +56,16 @@ module Referral
57
56
  end
58
57
 
59
58
  def id
60
- Digest::SHA1.hexdigest(to_h.merge(
59
+ h = to_h.merge(
61
60
  parent: nil,
62
61
  identifiers: identifiers&.map(&:id),
63
62
  node_type: node_type.name
64
- ).inspect)[0..6]
63
+ )
64
+ # Hand-rolled instead of Hash#inspect: Ruby 3.4 changed that format
65
+ # (`:key=>value` -> `key: value`), which would change `id` output
66
+ # depending on which Ruby version generated it.
67
+ serialized = "{#{h.map { |k, v| "#{k.inspect}=>#{v.inspect}" }.join(", ")}}"
68
+ Digest::SHA1.hexdigest(serialized)[0..6]
65
69
  end
66
70
 
67
71
  protected
@@ -1,3 +1,3 @@
1
1
  module Referral
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
data/lib/referral.rb CHANGED
@@ -2,11 +2,11 @@ require "referral/version"
2
2
  require "referral/error"
3
3
 
4
4
  module Referral
5
- def self.run(*args, **kwargs, &blk)
5
+ def self.run(...)
6
6
  require "referral/ensures_working_ruby"
7
7
  Referral::EnsuresWorkingRuby.new.call
8
8
 
9
9
  require "referral/runner"
10
- Runner.new.call(*args, **kwargs, &blk)
10
+ Runner.new.call(...)
11
11
  end
12
12
  end
data/referral.gemspec CHANGED
@@ -3,27 +3,23 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
  require "referral/version"
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "referral"
7
- spec.version = Referral::VERSION
8
- spec.authors = ["Justin Searls"]
9
- spec.email = ["searls@gmail.com"]
6
+ spec.name = "referral"
7
+ spec.version = Referral::VERSION
8
+ spec.authors = ["Justin Searls"]
9
+ spec.email = ["searls@gmail.com"]
10
10
 
11
- spec.summary = "Scan for definitions and references in your Ruby code."
12
- spec.homepage = "https://github.com/testdouble/referral"
13
- spec.license = "MIT"
11
+ spec.summary = "Scan for definitions and references in your Ruby code."
12
+ spec.homepage = "https://github.com/testdouble/referral"
13
+ spec.license = "MIT"
14
14
 
15
15
  spec.metadata["homepage_uri"] = spec.homepage
16
16
  spec.metadata["source_code_uri"] = spec.homepage
17
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
17
18
 
18
19
  spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
19
20
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
20
21
  end
21
- spec.bindir = "exe"
22
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.bindir = "exe"
23
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
24
  spec.require_paths = ["lib"]
24
-
25
- spec.add_development_dependency "bundler", "~> 1.17.3"
26
- spec.add_development_dependency "rake", "~> 12.3"
27
- spec.add_development_dependency "minitest", "~> 5.0"
28
- spec.add_development_dependency "standard"
29
25
  end
metadata CHANGED
@@ -1,72 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: referral
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Searls
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2019-11-19 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 1.17.3
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 1.17.3
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '12.3'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '12.3'
41
- - !ruby/object:Gem::Dependency
42
- name: minitest
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '5.0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '5.0'
55
- - !ruby/object:Gem::Dependency
56
- name: standard
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
- description:
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies: []
70
12
  email:
71
13
  - searls@gmail.com
72
14
  executables:
@@ -74,9 +16,10 @@ executables:
74
16
  extensions: []
75
17
  extra_rdoc_files: []
76
18
  files:
77
- - ".circleci/config.yml"
19
+ - ".github/workflows/ruby.yml"
78
20
  - ".gitignore"
79
21
  - ".standard.yml"
22
+ - CHANGELOG.md
80
23
  - Gemfile
81
24
  - Gemfile.lock
82
25
  - LICENSE.txt
@@ -114,7 +57,6 @@ licenses:
114
57
  metadata:
115
58
  homepage_uri: https://github.com/testdouble/referral
116
59
  source_code_uri: https://github.com/testdouble/referral
117
- post_install_message:
118
60
  rdoc_options: []
119
61
  require_paths:
120
62
  - lib
@@ -122,15 +64,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
122
64
  requirements:
123
65
  - - ">="
124
66
  - !ruby/object:Gem::Version
125
- version: '0'
67
+ version: 2.7.0
126
68
  required_rubygems_version: !ruby/object:Gem::Requirement
127
69
  requirements:
128
70
  - - ">="
129
71
  - !ruby/object:Gem::Version
130
72
  version: '0'
131
73
  requirements: []
132
- rubygems_version: 3.0.3
133
- signing_key:
74
+ rubygems_version: 4.0.21
134
75
  specification_version: 4
135
76
  summary: Scan for definitions and references in your Ruby code.
136
77
  test_files: []
data/.circleci/config.yml DELETED
@@ -1,32 +0,0 @@
1
- # Ruby CircleCI 2.0 configuration file
2
- #
3
- # Check https://circleci.com/docs/2.0/language-ruby/ for more details
4
- #
5
- version: 2
6
- jobs:
7
- build:
8
- docker:
9
- - image: circleci/ruby:2.6
10
-
11
- working_directory: ~/repo
12
-
13
- steps:
14
- - checkout
15
-
16
- - restore_cache:
17
- keys:
18
- - v1-dependencies-{{ checksum "Gemfile.lock" }}
19
- - v1-dependencies-
20
-
21
- - run:
22
- name: install dependencies
23
- command: |
24
- bundle install --jobs=4 --retry=3 --path vendor/bundle
25
-
26
- - save_cache:
27
- paths:
28
- - ./vendor/bundle
29
- key: v1-dependencies-{{ checksum "Gemfile.lock" }}
30
-
31
- - run: bundle exec rake
32
-