pry-singular 0.1.2 → 0.1.3

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: 57ae5fa6f19b3a2cd34284f59ca17d8a6404f36a8b743f1fe38e151ce9850393
4
- data.tar.gz: 58cb0f166f4912c88fffd4f4d4a62d02f462d51e3b92a4cd849f87f86a8a7016
3
+ metadata.gz: 69f3be7a640ee44ce7b6d9f0ba1252917536e9157998bd9bad584b628fc69f6b
4
+ data.tar.gz: 5b9c03bd193ca0b04f6808a486f378b4eeb0088cf0610bc36a03155ca3f189eb
5
5
  SHA512:
6
- metadata.gz: 7332bce8fd99c9d3a2363b2047aef1544151bfd227b9973e910d864668b176a52b2c6c11118fa48f411e6742763d503160305004f661e171e49d628c4de1959c
7
- data.tar.gz: 0a960a04d8d348969f7846cfbd85ebbde190bb3295541dee64e19571a562c45eb543ab4c283b3b664ee5add8e85d808d0b70803a84b7b60548893bf3eab4a44a
6
+ metadata.gz: 65423169250d8fd390c63728838df58bd03867f92a6be169719a78015a8d7d8720dbd777657decbfd9612f1bacb2230abc4a56623896ba229740078f52395809
7
+ data.tar.gz: 4d7f1fe36760dc73fb8c72c8af6ee8f5cb13f216233f59bc4aab4ca19bcbe804dcea3b07cd1f30bf7a5771e32f4bffb734bafb2b43c9c9c2e207914c795d04e1
data/.gitignore CHANGED
@@ -6,4 +6,5 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
- /.idea
9
+ /.idea
10
+ Gemfile.lock
data/README.md CHANGED
@@ -1,8 +1,5 @@
1
- # Pry::Singular
2
-
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/pry/singular`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
1
+ # Pry-Singular
2
+ [![Build Status](https://travis-ci.org/QWYNG/pry-singular.svg?branch=master)](https://travis-ci.org/QWYNG/pry-singular)
6
3
 
7
4
  ## Installation
8
5
 
@@ -34,6 +31,22 @@ then you can use singular method of set class as pry command
34
31
  also you can use argument
35
32
 
36
33
  pry(main)> create :user
34
+
35
+ Pry-Singular add only `singleton_methods(true)` for do not create core Ruby methods commands
36
+
37
+ If you have a method you want to specify write as below
38
+
39
+ ```ruby
40
+ PrySingular.set_class FactoryBot, only: [:build, :attributes_for]
41
+ ```
42
+
43
+ Also, If you have a method that you don't want to command
44
+
45
+ ```ruby
46
+ PrySingular.set_class FactoryBot, except: [:create]
47
+ ```
48
+
49
+
37
50
 
38
51
  ## Development
39
52
 
data/lib/pry-singular.rb CHANGED
@@ -1,17 +1,28 @@
1
1
  require "pry-singular/version"
2
+ require 'pry-singular/extract_pry_singular_options'
2
3
  require 'pry'
3
4
 
4
5
  module PrySingular
5
6
  class << self
6
7
  def set_class(*klasses)
7
- klasses.each(&method(:import_class_command))
8
+ options = klasses.extract_pry_singular_options!
9
+ normalize_pry_singular_options!(options)
10
+ klasses.each do |klass|
11
+ import_class_command(klass, options)
12
+ end
8
13
  end
9
14
 
10
15
  private
11
16
 
12
- def import_class_command(klass)
13
- commands = Pry::CommandSet.new do
14
- klass.public_methods.each do |klass_method|
17
+ def normalize_pry_singular_options!(options)
18
+ options[:only] = Array(options[:only])
19
+ options[:except] = Array(options[:except])
20
+ end
21
+
22
+ def import_class_command(klass, options)
23
+ singular_methods = adapt_options_singleton_methods(klass, options)
24
+ set_pry_command do
25
+ singular_methods.each do |klass_method|
15
26
  command "#{klass_method}", "#{klass}.#{klass_method}" do
16
27
  klass.class_eval <<-EOS
17
28
  #{Readline::HISTORY.to_a.last.gsub(' ', '')}
@@ -19,8 +30,18 @@ module PrySingular
19
30
  end
20
31
  end
21
32
  end
33
+ end
22
34
 
35
+ def set_pry_command(&block)
36
+ commands = Pry::CommandSet.new &block
23
37
  Pry.config.commands.import(commands)
24
38
  end
39
+
40
+ def adapt_options_singleton_methods(klass, options)
41
+ if options[:only].any?
42
+ return options[:only].select { |method_name| klass.respond_to?(method_name) }
43
+ end
44
+ klass.singleton_methods - options[:except]
45
+ end
25
46
  end
26
- end
47
+ end
@@ -0,0 +1,9 @@
1
+ class Array
2
+ def extract_pry_singular_options!
3
+ if last.is_a?(Hash)
4
+ pop
5
+ else
6
+ {}
7
+ end
8
+ end
9
+ end
@@ -1,3 +1,3 @@
1
1
  module PrySingular
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pry-singular
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - qwyng
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-13 00:00:00.000000000 Z
11
+ date: 2019-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -77,13 +77,13 @@ files:
77
77
  - ".travis.yml"
78
78
  - CODE_OF_CONDUCT.md
79
79
  - Gemfile
80
- - Gemfile.lock
81
80
  - LICENSE.txt
82
81
  - README.md
83
82
  - Rakefile
84
83
  - bin/console
85
84
  - bin/setup
86
85
  - lib/pry-singular.rb
86
+ - lib/pry-singular/extract_pry_singular_options.rb
87
87
  - lib/pry-singular/version.rb
88
88
  - pry-singular.gemspec
89
89
  homepage: https://github.com/QWYNG/pry-singular
data/Gemfile.lock DELETED
@@ -1,28 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- pry-singular (0.1.1)
5
- pry
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- coderay (1.1.2)
11
- method_source (0.9.2)
12
- minitest (5.11.3)
13
- pry (0.12.2)
14
- coderay (~> 1.1.0)
15
- method_source (~> 0.9.0)
16
- rake (10.5.0)
17
-
18
- PLATFORMS
19
- ruby
20
-
21
- DEPENDENCIES
22
- bundler (~> 1.17)
23
- minitest (~> 5.0)
24
- pry-singular!
25
- rake (~> 10.0)
26
-
27
- BUNDLED WITH
28
- 1.17.2