duplo 0.1.0 → 0.1.1

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
  SHA1:
3
- metadata.gz: 93bf9116a547102fde94dcfc60589763f00f53e0
4
- data.tar.gz: 84d1ce7ffe10cc5cf596236e648faa9d4b92eca0
3
+ metadata.gz: ced13192f8a77859809d3f5152405b8b8277d422
4
+ data.tar.gz: 82096e9fd70ffb4a938ace1f83cf69bbd5a1cd38
5
5
  SHA512:
6
- metadata.gz: 0fed2f92b20b3bfb3261cb91573e60b56260c9fcddd2a8b9c91838a0c6f5b2bcc1f9be4a03b14aa389709cbfe24a5960f836c8a75b36f4d4da8cd923ab72e88e
7
- data.tar.gz: fcf4f4e86ab76a7bc060c64033f9f5f5f7a842490e68796f26b39ec89e55b1f595fd59c0d63b2e1d4842e3a5dbc11d93a4c99a5a9fa09ae20d9f3d0e08d0a970
6
+ metadata.gz: 81567d7e7c0185dde4fcb4982a56fd09c2fd65093ef0ce0487ec908b8fe2dec9f78210ce81a125e19b31e1139de89b934ff63b34fb147c19c1893d1edadda908
7
+ data.tar.gz: 32845ca94f81a928a665353c463320e7ac991c4ebe90e00f84f7e30fbb0f882be8f3245c7cf4e293bf9a6689a82f73dfe8035bafc552b61475ba25be78ed1a21
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Duplo changelog
2
2
 
3
+ ### 0.1.1 (2015-05-09)
4
+
5
+ * Provide `#respond_to_missing?`
6
+
3
7
  ### 0.1.0 (2015-05-09)
4
8
 
5
9
  * First release
data/README.md CHANGED
@@ -1,22 +1,25 @@
1
1
  Duplo
2
2
  =====
3
3
 
4
- Generating nested collections with minimum effort.
4
+ [![Gem Version](https://badge.fury.io/rb/duplo.svg)](https://rubygems.org/gems/duplo)
5
+ [![Build Status](https://travis-ci.org/topalovic/duplo.svg?branch=master)](https://travis-ci.org/topalovic/duplo)
6
+
7
+ Generate nested collections with minimum effort.
5
8
 
6
9
  ```
7
- .-===============-.
8
- | ( ) ( ) ( ) ( ) |
9
- | ( ) ( ) ( ) ( ) |
10
- '-----------------' ndt.
10
+ .-===============-.
11
+ | ( ) ( ) ( ) ( ) |
12
+ | ( ) ( ) ( ) ( ) |
13
+ '-----------------' ndt.
11
14
  ```
12
15
 
13
16
 
14
17
  ## Usage
15
18
 
16
- Say you like matrices (bear with me), but not rolling them out by hand
17
- or writing nested loops to populate them. You might need a nested hash
18
- to test something real quick in your console, but generating it can be
19
- a royal PITA.
19
+ Let's say you like matrices (bear with me), but not rolling them out
20
+ by hand or writing nested loops to populate them. Or you might need a
21
+ few nested hashes to test something real quick in the console, but
22
+ generating them can be a royal PITA.
20
23
 
21
24
  So how about this:
22
25
 
@@ -41,20 +44,28 @@ a3a4 { rand }
41
44
  # [0.37651300630626683, 0.5035024403835663, 0.8237420938739567, 0.7611012983149591]]
42
45
  ```
43
46
 
44
- Accessing the current entry path is easy peasy:
47
+ Accessing the current entry path is easy peasy. Have an identity
48
+ matrix:
49
+
50
+ ```ruby
51
+ I4 = a4a4 { |i, j| i == j ? 1 : 0 }
52
+ # => [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]
53
+ ```
54
+
55
+ Have I mentioned that you can go up to an arbitrary number of
56
+ dimensions?
45
57
 
46
58
  ```ruby
47
59
  a3a3a2 { |i,j,k| [i,j,k].join(":") }
48
60
  # => [[["0:0:0", "0:0:1"], ["0:1:0", "0:1:1"], ["0:2:0", "0:2:1"]],
49
61
  # [["1:0:0", "1:0:1"], ["1:1:0", "1:1:1"], ["1:2:0", "1:2:1"]],
50
62
  # [["2:0:0", "2:0:1"], ["2:1:0", "2:1:1"], ["2:2:0", "2:2:1"]]]
51
- ```
63
+ ```
52
64
 
53
- Have I mentioned that you can go up to an arbitrary number of
54
- dimensions? Just watch out, it might get sluggish with higher dims due
55
- to the recursive approach under the hood.
65
+ Heads up, it might get a bit sluggish with higher dims due to the
66
+ recursive approach under the hood.
56
67
 
57
- So how 'bout them Hashes:
68
+ Now how 'bout them Hashes:
58
69
 
59
70
  ```ruby
60
71
  h3h2h2 { |path| "I'm a #{path.join}" }
@@ -76,7 +87,7 @@ ah2s3 { abc.sample(2).join }
76
87
  ```
77
88
 
78
89
  You get the picture. If you're *really* bored, you can spell those out
79
- for fun:
90
+ loud:
80
91
 
81
92
  ```ruby
82
93
  Duplo.spell "ah2s0"
@@ -85,7 +96,7 @@ Duplo.spell "ah2s0"
85
96
 
86
97
  Note that I've omitted a dim for the root array in that last
87
98
  example. It defaults to 5, so `as2h` means the same thing as
88
- `a5s2h5`. You can easily change the default size like this:
99
+ `a5s2h5`. You can easily change it like this:
89
100
 
90
101
  ```ruby
91
102
  Duplo.default_size = 3
@@ -97,8 +108,10 @@ alphabet as an array (as seen in the last example).
97
108
 
98
109
  ## Installation
99
110
 
100
- You know the drill. Add this line to your application's Gemfile
101
- (presumably in the "development" or "test" group):
111
+ You know the drill.
112
+
113
+ Add this line to your application's Gemfile, presumably in the
114
+ "development" or "test" group:
102
115
 
103
116
  ```ruby
104
117
  gem "duplo"
@@ -110,8 +123,8 @@ or install it yourself as:
110
123
  $ gem install duplo
111
124
  ```
112
125
 
113
- It's not exactly necessary to include the module, so you can work like
114
- this:
126
+ It's not really necessary to include the module, you can use it
127
+ directly:
115
128
 
116
129
  ```ruby
117
130
  Duplo.a2a2
data/lib/duplo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Duplo
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/lib/duplo.rb CHANGED
@@ -73,9 +73,13 @@ module Duplo
73
73
  n ? range.take(n) : range.to_a
74
74
  end
75
75
 
76
- def method_missing(method_name, *arguments, &block)
76
+ def respond_to_missing?(method_name, *)
77
77
  toy = method_name.to_s
78
+ Duplo.can_build?(toy) || super
79
+ end
78
80
 
81
+ def method_missing(method_name, *arguments, &block)
82
+ toy = method_name.to_s
79
83
  if Duplo.can_build? toy
80
84
  Duplo.build toy, *arguments, &block
81
85
  else
data/spec/duplo_spec.rb CHANGED
@@ -3,8 +3,10 @@ require "spec_helper"
3
3
  describe Duplo do
4
4
 
5
5
  let(:default_size) { Duplo.default_size }
6
+ let(:valid_bricks) { %w[a aa s ss h hh a0 a1h a2s33h44] }
7
+ let(:invalid_bricks) { %w[A n 0 11 1s a2s33t44] }
6
8
 
7
- it "has a version number" do
9
+ it "has a version number" do
8
10
  expect(Duplo::VERSION).not_to be nil
9
11
  end
10
12
 
@@ -15,10 +17,21 @@ describe Duplo do
15
17
  end
16
18
  end
17
19
 
18
- describe ".can_build?" do
19
- let(:valid_bricks) { %w[a aa s ss h hh a0 a1h a2s33h44] }
20
- let(:invalid_bricks) { %w[A n 0 11 1s a2s33t44] }
20
+ describe ".respond_to?" do
21
+ it "returns true for valid bricks" do
22
+ valid_bricks.each do |brick|
23
+ expect(Duplo.respond_to? brick).to be true
24
+ end
25
+ end
26
+
27
+ it "returns false for invalid bricks" do
28
+ invalid_bricks.each do |brick|
29
+ expect(Duplo.respond_to? brick).to be false
30
+ end
31
+ end
32
+ end
21
33
 
34
+ describe ".can_build?" do
22
35
  it "can build valid bricks" do
23
36
  valid_bricks.each do |brick|
24
37
  expect(Duplo.can_build? brick).to be true
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: duplo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikola Topalović
@@ -11,34 +11,34 @@ cert_chain: []
11
11
  date: 2015-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.8'
19
+ version: '10.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.8'
26
+ version: '10.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '3.2'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
41
- description: Generating nested collections with minimum effort.
40
+ version: '3.2'
41
+ description: Generate nested collections with minimum effort.
42
42
  email:
43
43
  - nikola.topalovic@gmail.com
44
44
  executables: []
@@ -74,7 +74,7 @@ rubyforge_project:
74
74
  rubygems_version: 2.4.5
75
75
  signing_key:
76
76
  specification_version: 4
77
- summary: Generating nested collections with minimum effort.
77
+ summary: Generate nested collections with minimum effort.
78
78
  test_files:
79
79
  - spec/duplo_spec.rb
80
80
  has_rdoc: