lexy 0.1.9 → 0.2

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: 15e549caeac9deaf55bd0fb14a2ba59177b5e5727bf1dededeb199e18f950543
4
- data.tar.gz: e56fa0ae082a99b6093ef7170afd50b527683cea365ec4b2b6e26183c23bb19d
3
+ metadata.gz: 34e94456008b4bfffe07bbae98053aa7a57f12e337681283e4f3483415cd944e
4
+ data.tar.gz: 8c4fb7fc7ae78b3ca5eeeaf45546f1a0983311ccfd0759f87b0620913f1fb22f
5
5
  SHA512:
6
- metadata.gz: fc98f980259229590edb2bf071c3232b1356c14875ca71ab0fe595e2c99e70c4a9aa2cfc8f0ffcb83b8fff9ea5de36f232a61ef77c1bd6e7b733c8280b4944fc
7
- data.tar.gz: cf7c406cedf1c60037dd912efd00bdb0570445b73859261bfc73278e053af702da9a6e0159ea933eca7174e8919363aa59d709aea826414366c58280f5900f1c
6
+ metadata.gz: 73b196f07b41e84026ba9354369a2a02f1d2c9ca83adacc9169ee74a9f78ce1768e3d18db2c72798b438be86e4d9fd9eb147a5988cf16b6f04173ce790feaa88
7
+ data.tar.gz: 622606b6bc7ea27fa1d1911e4beee2db00c67cc1d0098f386c70e6041a5a707f553a6c4d18f88de8d3ded05c84dd61483c51c75595a0a333f4277142f91d3f94
data/.rubocop.yml CHANGED
@@ -7,5 +7,5 @@ Documentation:
7
7
  Metrics/MethodLength:
8
8
  Enabled: false
9
9
 
10
- Metrics/AbcSize
10
+ Metrics/AbcSize:
11
11
  Enabled: false
data/Gemfile CHANGED
@@ -1,6 +1,8 @@
1
- source "https://rubygems.org"
1
+ # frozen_string_literal: true
2
2
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
3
+ source 'https://rubygems.org'
4
+
5
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
6
 
5
7
  # Specify your gem's dependencies in lexy.gemspec
6
8
  gemspec
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lexy (0.1.9)
5
- parser (>= 2.7.0.1)
6
- thor (>= 0.19.0)
4
+ lexy (0.2)
5
+ parser (~> 2.7, >= 2.7.0.1)
6
+ thor (~> 0.19, >= 0.19.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -28,7 +28,7 @@ GEM
28
28
  ruby-progressbar (~> 1.7)
29
29
  unicode-display_width (>= 1.4.0, < 2.0)
30
30
  ruby-progressbar (1.10.1)
31
- thor (1.0.1)
31
+ thor (0.20.3)
32
32
  unicode-display_width (1.7.0)
33
33
 
34
34
  PLATFORMS
@@ -38,8 +38,8 @@ DEPENDENCIES
38
38
  bundler (~> 1.17)
39
39
  lexy!
40
40
  minitest (~> 5.0)
41
- pry (>= 0.13.1)
42
- rubocop (>= 0.8.3)
41
+ pry (~> 0.13, >= 0.13.1)
42
+ rubocop (~> 0.8, >= 0.8.3)
43
43
 
44
44
  BUNDLED WITH
45
45
  1.17.2
data/Rakefile CHANGED
@@ -1,10 +1,12 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rake/testtask'
3
5
 
4
6
  Rake::TestTask.new(:test) do |t|
5
- t.libs << "test"
6
- t.libs << "lib"
7
- t.test_files = FileList["test/**/*_test.rb"]
7
+ t.libs << 'test'
8
+ t.libs << 'lib'
9
+ t.test_files = FileList['test/**/*_test.rb']
8
10
  end
9
11
 
10
- task :default => :test
12
+ task default: :test
data/bin/console CHANGED
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- require "bundler/setup"
4
- require "lexy"
4
+ require 'bundler/setup'
5
+ require 'lexy'
5
6
 
6
7
  # You can add fixtures and/or initialization code here to make experimenting
7
8
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +11,5 @@ require "lexy"
10
11
  # require "pry"
11
12
  # Pry.start
12
13
 
13
- require "irb"
14
+ require 'irb'
14
15
  IRB.start(__FILE__)
data/exe/lexy CHANGED
@@ -2,9 +2,8 @@
2
2
 
3
3
  # frozen_string_literal: true
4
4
 
5
- $:.unshift File.expand_path("../../lib/", __FILE__)
5
+ $LOAD_PATH.unshift File.expand_path('../lib', __dir__)
6
6
 
7
- require 'thor'
8
7
  require 'lexy'
9
8
 
10
9
  Lexy::CLI.start(ARGV)
data/lexy.gemspec CHANGED
@@ -23,12 +23,12 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = ['lexy']
24
24
  spec.require_paths = ['lib']
25
25
 
26
- spec.add_dependency 'thor', '>= 0.19.0'
27
- spec.add_dependency 'parser', '>= 2.7.0.1'
26
+ spec.add_runtime_dependency 'parser', '~> 2.7', '>= 2.7.0.1'
27
+ spec.add_runtime_dependency 'thor', '~> 0.19', '>= 0.19.0'
28
28
 
29
29
  spec.add_development_dependency 'bundler', '~> 1.17'
30
30
  spec.add_development_dependency 'minitest', '~> 5.0'
31
- spec.add_development_dependency 'rubocop', '>= 0.8.3'
31
+ spec.add_development_dependency 'rubocop', '~> 0.8', '>= 0.8.3'
32
32
 
33
- spec.add_development_dependency 'pry', '>= 0.13.1'
33
+ spec.add_development_dependency 'pry', '~> 0.13', '>= 0.13.1'
34
34
  end
data/lib/lexy.rb CHANGED
@@ -7,5 +7,5 @@ module Lexy
7
7
  end
8
8
 
9
9
  require 'lexy/version'
10
- require 'lexy/spec_creator'
10
+ require 'lexy/spec_finder'
11
11
  require 'lexy/cli'
data/lib/lexy/cli.rb CHANGED
@@ -1,15 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'thor'
4
-
5
3
  module Lexy
6
- class CLI < Thor
7
- desc 'create_spec_file /full/path/to/file.rb', 'Create if not exists spec file for given file'
8
- def create_spec_file(path)
9
- Lexy::SpecCreator.new.call(path)
10
- end
4
+ class CLI < Thor
5
+ desc 'find_spec_file /full/path/to/file.rb', 'Returns spec file path. Creates a new spec unless it exists'
6
+ def find_spec_file(path)
7
+ result = Lexy::SpecCreator.new.call(path)
11
8
 
12
- private
9
+ puts result
10
+ end
13
11
 
14
12
  def self.exit_on_failure?
15
13
  false
@@ -3,12 +3,12 @@
3
3
  require 'fileutils'
4
4
 
5
5
  module Lexy
6
- class SpecCreator
6
+ class SpecFinder
7
7
  def call(path)
8
8
  stack = build_dirs_stack(path)
9
9
  spec_path = build_spec_path(path, stack)
10
- ensure_folder_created(spec_path)
11
10
  const = extract_constant_name(path)
11
+ ensure_folder_created(spec_path)
12
12
  create_spec_file(spec_path, const)
13
13
  end
14
14
 
@@ -44,35 +44,15 @@ module Lexy
44
44
  base_path + spec_path + [spec_name]
45
45
  end
46
46
 
47
- def ensure_folder_created(path)
48
- FileUtils.mkdir_p(File.join(path[0...-1]))
49
- end
50
-
51
- def create_spec_file(path, const)
52
- path = File.join(path)
53
-
54
- if File.exists?(path)
55
- puts 'Spec file already created'
56
- return
57
- end
58
-
59
- template = <<~SPEC
60
- # frozen_string_literal: true
61
-
62
- RSpec.describe #{const.join('::')} do
63
- subject { described_class.new }
64
- end
65
- SPEC
66
-
67
- File.open(path, 'a+') { |file| file.write(template) }
68
- end
69
-
70
47
  def extract_constant_name(path)
71
48
  file_contents = File.read(path)
72
49
 
73
50
  ast = Parser::CurrentRuby.parse(file_contents)
74
51
 
75
- process_scope(ast)
52
+ const = process_scope(ast)
53
+ raise 'No constants definitions' if const.nil?
54
+
55
+ const
76
56
  end
77
57
 
78
58
  def process_scope(ast, const = [])
@@ -81,12 +61,7 @@ module Lexy
81
61
  names = []
82
62
  local_const = const.dup
83
63
 
84
- case ast.type
85
- when :module
86
- name = node_name(ast)
87
-
88
- local_const << name
89
- when :class
64
+ if %i[module class].include?(ast.type)
90
65
  name = node_name(ast)
91
66
 
92
67
  local_const << name
@@ -101,6 +76,27 @@ module Lexy
101
76
  names
102
77
  end
103
78
 
79
+ def ensure_folder_created(path)
80
+ FileUtils.mkdir_p(File.join(path[0...-1]))
81
+ end
82
+
83
+ def create_spec_file(path, const)
84
+ path = File.join(path)
85
+
86
+ return path if File.exist?(path)
87
+
88
+ template = <<~SPEC
89
+ # frozen_string_literal: true
90
+
91
+ RSpec.describe #{const.join('::')} do
92
+ subject { described_class.new }
93
+ end
94
+ SPEC
95
+
96
+ File.open(path, 'a+') { |file| file.write(template) }
97
+ path
98
+ end
99
+
104
100
  def node_name(ast)
105
101
  ast.to_a.first.to_a[1]
106
102
  end
data/lib/lexy/version.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Lexy
2
- VERSION = "0.1.9"
4
+ VERSION = '0.2'
3
5
  end
metadata CHANGED
@@ -1,43 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lexy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: '0.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rostislav Katin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-14 00:00:00.000000000 Z
11
+ date: 2020-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: thor
14
+ name: parser
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.7'
17
20
  - - ">="
18
21
  - !ruby/object:Gem::Version
19
- version: 0.19.0
22
+ version: 2.7.0.1
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '2.7'
24
30
  - - ">="
25
31
  - !ruby/object:Gem::Version
26
- version: 0.19.0
32
+ version: 2.7.0.1
27
33
  - !ruby/object:Gem::Dependency
28
- name: parser
34
+ name: thor
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - ">="
32
38
  - !ruby/object:Gem::Version
33
- version: 2.7.0.1
39
+ version: 0.19.0
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '0.19'
34
43
  type: :runtime
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
38
47
  - - ">="
39
48
  - !ruby/object:Gem::Version
40
- version: 2.7.0.1
49
+ version: 0.19.0
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '0.19'
41
53
  - !ruby/object:Gem::Dependency
42
54
  name: bundler
43
55
  requirement: !ruby/object:Gem::Requirement
@@ -70,6 +82,9 @@ dependencies:
70
82
  name: rubocop
71
83
  requirement: !ruby/object:Gem::Requirement
72
84
  requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '0.8'
73
88
  - - ">="
74
89
  - !ruby/object:Gem::Version
75
90
  version: 0.8.3
@@ -77,6 +92,9 @@ dependencies:
77
92
  prerelease: false
78
93
  version_requirements: !ruby/object:Gem::Requirement
79
94
  requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '0.8'
80
98
  - - ">="
81
99
  - !ruby/object:Gem::Version
82
100
  version: 0.8.3
@@ -84,6 +102,9 @@ dependencies:
84
102
  name: pry
85
103
  requirement: !ruby/object:Gem::Requirement
86
104
  requirements:
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: '0.13'
87
108
  - - ">="
88
109
  - !ruby/object:Gem::Version
89
110
  version: 0.13.1
@@ -91,6 +112,9 @@ dependencies:
91
112
  prerelease: false
92
113
  version_requirements: !ruby/object:Gem::Requirement
93
114
  requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.13'
94
118
  - - ">="
95
119
  - !ruby/object:Gem::Version
96
120
  version: 0.13.1
@@ -117,7 +141,7 @@ files:
117
141
  - lexy.gemspec
118
142
  - lib/lexy.rb
119
143
  - lib/lexy/cli.rb
120
- - lib/lexy/spec_creator.rb
144
+ - lib/lexy/spec_finder.rb
121
145
  - lib/lexy/version.rb
122
146
  homepage: https://github.com/poctek/lexy
123
147
  licenses: