attire 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -4
- data/lib/attire/attr_init.rb +1 -1
- data/lib/attire.rb +9 -9
- metadata +10 -21
- data/.gitignore +0 -15
- data/.rspec +0 -1
- data/Gemfile +0 -4
- data/Rakefile +0 -2
- data/attire.gemspec +0 -21
- data/lib/attire/version.rb +0 -3
- data/spec/attr_init_spec.rb +0 -47
- data/spec/attr_method_spec.rb +0 -16
- data/spec/attr_query_spec.rb +0 -19
- data/spec/fattr_spec.rb +0 -17
- data/spec/spec_helper.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 31b2df57e10b512df7cfc2dada08361ffac9c7fb
|
4
|
+
data.tar.gz: 98aacf33921ee96122ceca88893eef7e72d65ea4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 05b75852d131e69c5cf93bf5834291b3d7032a4e4fa498350948d6d004117456bb607c62a6615281f43e1bb3a681b14c159be33bd342df0ccb47414ea9821bcb
|
7
|
+
data.tar.gz: d90d695b0b7cc62339ab4a99337df6040dd2d3d4ba093e422e92882b68c0470188c2e881f8ca6b383c9af387672e5d7a2b29dd5470aa96b8976d662e022a5969
|
data/README.md
CHANGED
@@ -38,8 +38,8 @@ class CheeseSpreader
|
|
38
38
|
attr_method :spread, :cheese, crackers: Jacobs.new
|
39
39
|
|
40
40
|
def spread
|
41
|
-
|
42
|
-
|
41
|
+
raise CheeseError unless cheese.is_a?(Cheddar)
|
42
|
+
cheese.spread_on(crackers)
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
@@ -72,11 +72,11 @@ gem 'attire'
|
|
72
72
|
|
73
73
|
And then execute:
|
74
74
|
|
75
|
-
|
75
|
+
$ bundle
|
76
76
|
|
77
77
|
Or install it yourself as:
|
78
78
|
|
79
|
-
|
79
|
+
$ gem install attire
|
80
80
|
|
81
81
|
|
82
82
|
## Contributing
|
data/lib/attire/attr_init.rb
CHANGED
data/lib/attire.rb
CHANGED
@@ -5,7 +5,7 @@ module Attire
|
|
5
5
|
def attr_query(*names)
|
6
6
|
names.each do |name|
|
7
7
|
name = name.to_s
|
8
|
-
fail ArgumentError, "`#{name}?`, not `#{name}`." unless name.end_with?(
|
8
|
+
fail ArgumentError, "`#{name}?`, not `#{name}`." unless name.end_with?('?')
|
9
9
|
define_method(name) { !!send(name.chop) }
|
10
10
|
end
|
11
11
|
end
|
@@ -16,22 +16,22 @@ module Attire
|
|
16
16
|
|
17
17
|
def attr_method(verb, *args, &b)
|
18
18
|
define_singleton_method(verb) { |*a| new(*a).send(verb) }
|
19
|
-
|
20
|
-
|
19
|
+
attr_init(*args, &b)
|
20
|
+
end
|
21
21
|
|
22
|
-
|
22
|
+
def fattr_init(*args, &b)
|
23
23
|
attr_init(*args) do
|
24
|
-
|
25
|
-
|
24
|
+
instance_eval(&b) if b
|
25
|
+
freeze
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
29
|
def fattr_method(verb, *args, &b)
|
30
30
|
define_singleton_method(verb) { |*a| new(*a).send(verb) }
|
31
|
-
|
32
|
-
|
31
|
+
fattr_init(*args, &b)
|
32
|
+
end
|
33
33
|
end
|
34
34
|
|
35
35
|
class Module
|
36
|
-
|
36
|
+
include Attire
|
37
37
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: attire
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Max White
|
@@ -17,6 +17,9 @@ dependencies:
|
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.1'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 3.1.0
|
20
23
|
type: :development
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -24,29 +27,20 @@ dependencies:
|
|
24
27
|
- - "~>"
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '3.1'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 3.1.0
|
27
33
|
description:
|
28
|
-
email:
|
29
|
-
- mushishi78@gmail.com
|
34
|
+
email: mushishi78@gmail.com
|
30
35
|
executables: []
|
31
36
|
extensions: []
|
32
37
|
extra_rdoc_files: []
|
33
38
|
files:
|
34
|
-
- ".gitignore"
|
35
|
-
- ".rspec"
|
36
|
-
- Gemfile
|
37
39
|
- LICENSE.txt
|
38
40
|
- README.md
|
39
|
-
- Rakefile
|
40
|
-
- attire.gemspec
|
41
41
|
- lib/attire.rb
|
42
42
|
- lib/attire/attr_init.rb
|
43
|
-
|
44
|
-
- spec/attr_init_spec.rb
|
45
|
-
- spec/attr_method_spec.rb
|
46
|
-
- spec/attr_query_spec.rb
|
47
|
-
- spec/fattr_spec.rb
|
48
|
-
- spec/spec_helper.rb
|
49
|
-
homepage: https://github.com/mushishi78/attire
|
43
|
+
homepage:
|
50
44
|
licenses:
|
51
45
|
- MIT
|
52
46
|
metadata: {}
|
@@ -70,9 +64,4 @@ rubygems_version: 2.2.2
|
|
70
64
|
signing_key:
|
71
65
|
specification_version: 4
|
72
66
|
summary: Convenience methods to remove some boiler plate in defining classes.
|
73
|
-
test_files:
|
74
|
-
- spec/attr_init_spec.rb
|
75
|
-
- spec/attr_method_spec.rb
|
76
|
-
- spec/attr_query_spec.rb
|
77
|
-
- spec/fattr_spec.rb
|
78
|
-
- spec/spec_helper.rb
|
67
|
+
test_files: []
|
data/.gitignore
DELETED
data/.rspec
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
--require spec_helper
|
data/Gemfile
DELETED
data/Rakefile
DELETED
data/attire.gemspec
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'attire/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = "attire"
|
8
|
-
spec.version = Attire::VERSION
|
9
|
-
spec.authors = ["Max White"]
|
10
|
-
spec.email = ["mushishi78@gmail.com"]
|
11
|
-
spec.summary = %q{Convenience methods to remove some boiler plate in defining classes.}
|
12
|
-
spec.homepage = "https://github.com/mushishi78/attire"
|
13
|
-
spec.license = "MIT"
|
14
|
-
|
15
|
-
spec.files = `git ls-files -z`.split("\x0")
|
16
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
-
spec.require_paths = ["lib"]
|
19
|
-
|
20
|
-
spec.add_development_dependency 'rspec', '~> 3.1'
|
21
|
-
end
|
data/lib/attire/version.rb
DELETED
data/spec/attr_init_spec.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
describe '#attr_init' do
|
2
|
-
let(:instance) { define_class(inside).new(1, 2, option1: 54) }
|
3
|
-
let(:inside) do
|
4
|
-
Proc.new { attr_init :argument1, :argument2, option1: 23, option2: 'default', option3: nil }
|
5
|
-
end
|
6
|
-
|
7
|
-
it 'assigns arguments to private methods' do
|
8
|
-
expect(instance.send(:argument1)).to eq(1)
|
9
|
-
expect(instance.send(:argument2)).to eq(2)
|
10
|
-
expect(instance.send(:option1)).to eq(54)
|
11
|
-
expect(instance.send(:option2)).to eq('default')
|
12
|
-
expect(instance.send(:option3)).to eq(nil)
|
13
|
-
end
|
14
|
-
|
15
|
-
context 'with optional hash missing' do
|
16
|
-
let(:instance) { define_class(inside).new(1, 2) }
|
17
|
-
|
18
|
-
it 'still assigns arguments to private methods using default' do
|
19
|
-
expect(instance.send(:option1)).to eq(23)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
context 'with input of wrong type' do
|
24
|
-
let(:inside) { Proc.new { attr_init 'Strings bad' } }
|
25
|
-
it { expect { define_class(inside) }.to raise_error(ArgumentError) }
|
26
|
-
end
|
27
|
-
|
28
|
-
context 'with too many arguments' do
|
29
|
-
let(:instance) { define_class(inside).new(1, 2, {}, 4, 5) }
|
30
|
-
it { expect { instance }.to raise_error(ArgumentError) }
|
31
|
-
end
|
32
|
-
|
33
|
-
context 'with too few arguments' do
|
34
|
-
let(:instance) { define_class(inside).new(1) }
|
35
|
-
it { expect { instance }.to raise_error(ArgumentError) }
|
36
|
-
end
|
37
|
-
|
38
|
-
context 'with block' do
|
39
|
-
let(:instance) { define_class(inside).new(1) }
|
40
|
-
let(:inside) { Proc.new { attr_init :foo do @foo = 5 end } }
|
41
|
-
|
42
|
-
it 'calls block' do
|
43
|
-
expect(instance.send(:foo)).to eq(5)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
data/spec/attr_method_spec.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
describe '#attr_method' do
|
2
|
-
let(:klass) do
|
3
|
-
klass = Class.new do
|
4
|
-
attr_method :select, :child, toy: 5
|
5
|
-
|
6
|
-
def select
|
7
|
-
toy * child
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'creates a class method that initializes and calls instance method' do
|
13
|
-
expect(klass.select(3)).to eq(15)
|
14
|
-
expect(klass.select(3, toy: 2)).to eq(6)
|
15
|
-
end
|
16
|
-
end
|
data/spec/attr_query_spec.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
describe '#attr_query' do
|
2
|
-
context 'with correct arguments' do
|
3
|
-
let(:instance) { define_class(inside).new }
|
4
|
-
let(:inside) do
|
5
|
-
Proc.new { attr_accessor :foo; attr_query :foo? }
|
6
|
-
end
|
7
|
-
|
8
|
-
it 'creates a query method' do
|
9
|
-
expect(instance.foo?).to be(false)
|
10
|
-
instance.foo = 'rah'
|
11
|
-
expect(instance.foo?).to be(true)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
context 'without a tailing questionmark' do
|
16
|
-
let(:inside) { Proc.new { attr_query :bar } }
|
17
|
-
it { expect { define_class(inside) }.to raise_error }
|
18
|
-
end
|
19
|
-
end
|
data/spec/fattr_spec.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
describe '#fattr_init' do
|
2
|
-
let(:instance) { define_class(inside).new(5) }
|
3
|
-
let(:inside) { Proc.new { fattr_init :chick } }
|
4
|
-
|
5
|
-
it 'freezes class after initializing' do
|
6
|
-
expect(instance.send(:chick)).to eq(5)
|
7
|
-
expect { instance.instance_variable_set('@chick', 12) }.to raise_error
|
8
|
-
end
|
9
|
-
|
10
|
-
context 'with block' do
|
11
|
-
let(:inside) { Proc.new { fattr_init :chick do @chick = 15 end } }
|
12
|
-
it 'still evaluates block' do
|
13
|
-
expect(instance.send(:chick)).to eq(15)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|