fabrik 0.2.0 → 0.3.0

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: 9d7ddf5fe3d642feb9502e8de72c94eb004b3850
4
- data.tar.gz: 0506d8ff80322b61bda20f830e7bb55ed25c49f9
3
+ metadata.gz: 4d50882d05566d3149871ec470c38903cc312431
4
+ data.tar.gz: 6d3acb7860899bef215588d6b9ad5b0c2d49a3e3
5
5
  SHA512:
6
- metadata.gz: 32be03c546e69bbbf137f92ca6e65b9dcae6995d13f403e980f6fa26f3c2130f8a78f9f0716c7c5c8836abaacc88dd05008d0cdd89bf656031103eae90a71f01
7
- data.tar.gz: e5e2600754da4d5f9fa9fbc239cd647afdf0638033a88c0db0f2fa82fa7bc3f1679c3f046978fb3186946f6d6bf8b414b6e9d87ebe00203e8c009dcf82954481
6
+ metadata.gz: 1cceb98334b134370f30143d06fea88a9c2820f29aa68b82f0126bbea7f606dcd4f6d1b5a4091deccc9fe429269c750ec4092521a5f650a89759a12770f567ef
7
+ data.tar.gz: 749bf0cc72f504f847edc2240511fb1d8e7529bd93c5482f8bcb3273323f1caecbccd0d1d75f8125708b8dd70567e14b9e64bb0a575b74c6dd3d9ca487862db2
data/README.md CHANGED
@@ -49,6 +49,15 @@ class Lion
49
49
  end
50
50
  ```
51
51
 
52
+ Alternatively, a trait can be created with `Fabrik::Trait.build`.
53
+
54
+ ```ruby
55
+ Lion = Fabrik::Trait.build do
56
+ def mother; :lioness end
57
+ def father; :lion end
58
+ end
59
+ ```
60
+
52
61
  A class uses traits by extending `Fabrik::Composer` and composing the traits.
53
62
 
54
63
  ```ruby
@@ -83,6 +92,25 @@ tigon.mother # => :lioness
83
92
  tigon.father # => :tiger
84
93
  ```
85
94
 
95
+ Traits can be composed from other traits in the same way:
96
+
97
+ ```ruby
98
+ class TigonTrait
99
+ extend Fabrik::Trait
100
+ compose Panthera,
101
+ Tiger[exclude: :mother],
102
+ Lion[exclude: :father]
103
+ end
104
+ ```
105
+
106
+ Or by using `.build`:
107
+
108
+ ```ruby
109
+ TigonTrait = Fabrik::Trait.build(Panthera, Tiger[exclude: :mother], Lion[exclude: :father]) do
110
+ def scratch; :scratched end
111
+ end
112
+ ```
113
+
86
114
  View the specs for further examples, including composable traits and traits
87
115
  that provide methods from shared modules.
88
116
 
@@ -9,6 +9,14 @@ module Fabrik
9
9
  extend Forwardable
10
10
  def_delegators :own, :instance_methods, :send
11
11
 
12
+ def self.build(*args, &blk)
13
+ Class.new do
14
+ extend Trait
15
+ compose(*args) if args.count > 0
16
+ provides(&blk) if blk
17
+ end
18
+ end
19
+
12
20
  def methods(opts = {})
13
21
  provides_from(own, *own.instance_methods)
14
22
  dictionary.method_map(opts)
@@ -1,3 +1,3 @@
1
1
  module Fabrik
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  end
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fabrik
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Corcoran
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-06 00:00:00.000000000 Z
11
+ date: 2015-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.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
26
  version: '3.0'
27
27
  description: |
@@ -33,15 +33,15 @@ executables: []
33
33
  extensions: []
34
34
  extra_rdoc_files: []
35
35
  files:
36
- - LICENSE.txt
37
- - README.md
38
- - lib/fabrik.rb
39
36
  - lib/fabrik/composer.rb
40
37
  - lib/fabrik/dictionary.rb
41
38
  - lib/fabrik/errors.rb
42
39
  - lib/fabrik/resolver.rb
43
40
  - lib/fabrik/trait.rb
44
41
  - lib/fabrik/version.rb
42
+ - lib/fabrik.rb
43
+ - README.md
44
+ - LICENSE.txt
45
45
  homepage: http://github.com/joecorcoran/fabrik
46
46
  licenses:
47
47
  - MIT
@@ -52,17 +52,17 @@ require_paths:
52
52
  - lib
53
53
  required_ruby_version: !ruby/object:Gem::Requirement
54
54
  requirements:
55
- - - ">="
55
+ - - '>='
56
56
  - !ruby/object:Gem::Version
57
57
  version: '0'
58
58
  required_rubygems_version: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ">="
60
+ - - '>='
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  requirements: []
64
64
  rubyforge_project:
65
- rubygems_version: 2.2.2
65
+ rubygems_version: 2.0.14
66
66
  signing_key:
67
67
  specification_version: 4
68
68
  summary: Traits for Ruby 2