lexy 0.1.9 → 0.2

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
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: