trick 0.0.1 → 0.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
  SHA1:
3
- metadata.gz: a688b7ab68813367360b0a6beef1dea9217683a5
4
- data.tar.gz: 0c5f0c528a77212bc42cd6ea7f0a32ac9a059fa7
3
+ metadata.gz: 88acc4d816f3bcdc12e42e2bbd3c8b1b5a37dc9f
4
+ data.tar.gz: fa1e3652dae7dd7f2c0fb616057f3fc6afcb89bd
5
5
  SHA512:
6
- metadata.gz: bc4012f182391244e31a6dc489169c3e0c515255bc6ead700fac57329c609a140502a752365088576b8bf7117b54a92f8ce6685e8225945bc46093122c715aff
7
- data.tar.gz: 7e732c5474bf1f0663631dc1344b8576aa8eed4238312dca97e9dbf484880e9a27c5818cb1ce5c3fd4cdbe6ec74a811b17c2385227821678dede30603e589ee3
6
+ metadata.gz: 50760fb36b1c2f8a3fb97ca4a889a4f3c3f8e02d43640998b207e2bd024d2ccadaaa693972be4a7df0b8551428cc7a362f94fb7c7812bb4dbef156d4fe6d46cd
7
+ data.tar.gz: 8ac9b519dcfb04b6c5ac2e8aa36f0876fb4dfea2758ec47bbc20a7df403ce275c654b81020a26138fe7eb53a7f9f5e9f9fc9833157f17d254936a73742fadcb6
data/README.md CHANGED
@@ -20,7 +20,7 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- ### Turn something into a... Proc!
23
+ ### Turn something into a proc
24
24
  ```ruby
25
25
  module Letter
26
26
  extend Trick::Proclike
@@ -30,9 +30,25 @@ module Letter
30
30
  end
31
31
  end
32
32
 
33
- ["A", "B", "C"].map(&Letter) # => ["Letter A", "Letter B", "Letter C"]
33
+ Letter.("A") # => "Letter A"
34
+ [B", "C"].map(&Letter) # => ["Letter B", "Letter C"]
35
+
36
+ class RoundedNum
37
+ extend Trick::Factory
38
+
39
+ attr_reader :value
40
+
41
+ def initialize(number)
42
+ @value = number.round
43
+ end
44
+ end
45
+
46
+ RoundedNum.(3.333).value # => 3
47
+ [5.75, 0.99].map(&RoundedNum).map(&:value) # => [6, 1]
34
48
  ```
35
49
 
50
+
51
+
36
52
  ## Contributing
37
53
 
38
54
  1. Fork it ( https://github.com/focused/trick/fork )
@@ -0,0 +1,11 @@
1
+ require "trick/proclike"
2
+
3
+ module Trick
4
+ module Factory
5
+ include Trick::Proclike
6
+
7
+ def call(*args)
8
+ new(*args)
9
+ end
10
+ end
11
+ end
data/lib/trick/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Trick
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,42 @@
1
+ require "trick/factory"
2
+
3
+ RSpec.describe Trick::Factory do
4
+ A = Struct.new :x, :y do
5
+ extend Trick::Factory
6
+ end
7
+
8
+ class RoundedNum
9
+ extend Trick::Factory
10
+
11
+ attr_reader :value
12
+
13
+ def initialize(number)
14
+ @value = number.round
15
+ end
16
+ end
17
+
18
+ describe "::to_proc" do
19
+ it "acts as a constructor of a class", :readme do
20
+ expect(
21
+ [5.75, 0.99].map(&RoundedNum).map(&:value)
22
+ ).to eq [6, 1]
23
+ end
24
+ end
25
+
26
+ describe "::call" do
27
+ it "returns new instance of a class" do
28
+ expect(A.(10, 17)).to be_a A
29
+ end
30
+
31
+ it "creates an instance with passed values" do
32
+ a = A.(1, 2)
33
+
34
+ expect(a.x).to eq 1
35
+ expect(a.y).to eq 2
36
+ end
37
+
38
+ it "creates an instance with passed value", :readme do
39
+ expect(RoundedNum.(3.333).value).to eq 3
40
+ end
41
+ end
42
+ end
@@ -1,7 +1,7 @@
1
1
  require "trick/proclike"
2
2
 
3
3
  RSpec.describe Trick::Proclike do
4
- module A
4
+ module ABC
5
5
  extend Trick::Proclike
6
6
  end
7
7
 
@@ -17,25 +17,21 @@ RSpec.describe Trick::Proclike do
17
17
  [:a, "b", 1, nil, [], {}]
18
18
  end
19
19
 
20
- subject { A }
20
+ subject { ABC }
21
21
 
22
22
  describe "::to_proc" do
23
23
  it "returns a Proc" do
24
- expect(A.to_proc).to be_a Proc
24
+ expect(ABC.to_proc).to be_a Proc
25
25
  end
26
26
 
27
27
  it "returns callable with arguments" do
28
- expect(A.to_proc.call(*args)).to eq A.call(*args)
28
+ expect(ABC.to_proc.call(*args)).to eq ABC.call(*args)
29
29
  end
30
30
 
31
- it "returns result of call" do
32
- expect(A.to_proc.(27)).to eq A.(27)
33
- end
34
-
35
- it "applies as a block" do
31
+ it "applies as a block", :readme do
36
32
  expect(
37
- ["A", "B", "C"].map(&Letter)
38
- ).to eq ["Letter A", "Letter B", "Letter C"]
33
+ ["B", "C"].map(&Letter)
34
+ ).to eq ["Letter B", "Letter C"]
39
35
  end
40
36
  end
41
37
 
@@ -43,9 +39,9 @@ RSpec.describe Trick::Proclike do
43
39
  it { is_expected.to respond_to(:call) }
44
40
 
45
41
  it "accepts any arguments" do
46
- expect { A.call(*args) }.not_to raise_error
42
+ expect { ABC.call(*args) }.not_to raise_error
47
43
  end
48
44
 
49
- it { expect(A.call).to eq A }
45
+ it { expect(ABC.call).to eq ABC }
50
46
  end
51
47
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trick
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Novikov
@@ -66,8 +66,10 @@ files:
66
66
  - README.md
67
67
  - Rakefile
68
68
  - lib/trick.rb
69
+ - lib/trick/factory.rb
69
70
  - lib/trick/proclike.rb
70
71
  - lib/trick/version.rb
72
+ - spec/factory_spec.rb
71
73
  - spec/proclike_spec.rb
72
74
  - spec/spec_helper.rb
73
75
  - trick.gemspec
@@ -96,5 +98,6 @@ signing_key:
96
98
  specification_version: 4
97
99
  summary: Ruby syntax enhancements.
98
100
  test_files:
101
+ - spec/factory_spec.rb
99
102
  - spec/proclike_spec.rb
100
103
  - spec/spec_helper.rb