named 1.0.0 → 1.1.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.
- data/README.md +48 -5
- data/Rakefile +6 -0
- data/lib/named.rb +1 -0
- data/lib/named/class.rb +8 -7
- data/lib/named/inspection.rb +8 -0
- data/lib/named/module.rb +1 -1
- data/lib/named/naming.rb +0 -4
- data/lib/named/version.rb +1 -1
- data/named.gemspec +3 -2
- data/spec/named/class_spec.rb +66 -0
- data/spec/named/inspection_spec.rb +10 -0
- data/spec/named/module_spec.rb +31 -0
- data/spec/named/naming_spec.rb +13 -0
- data/spec/spec_helper.rb +2 -0
- metadata +24 -3
data/README.md
CHANGED
@@ -1,6 +1,53 @@
|
|
1
1
|
# Named
|
2
2
|
|
3
|
-
|
3
|
+
Give anonymous modules and classes names when they are inspected.
|
4
|
+
|
5
|
+
[](http://travis-ci.org/adamhunter/named)
|
6
|
+
[](https://codeclimate.com/github/adamhunter/named)
|
7
|
+
|
8
|
+
## Usage
|
9
|
+
|
10
|
+
### Named modules
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
fancy_module = Named::Module.new('FancyModule') do
|
14
|
+
def module_method
|
15
|
+
puts 'Hello from the module'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
fancy_module.inspect # => "Named::Module:FancyModule:0x7fa9ea9e6178"
|
20
|
+
```
|
21
|
+
|
22
|
+
### Named classes
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
# subclasses Array
|
26
|
+
fancy_class = Named::Class.new('FancyClass', Array) do
|
27
|
+
def class_method
|
28
|
+
puts 'Hello from the class'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# Inspection string shows the superclass
|
33
|
+
fancy_class.inspect => "Named::Class:Array:FancyClass:0x7fa9ea8aaea8"
|
34
|
+
```
|
35
|
+
|
36
|
+
### Using them together
|
37
|
+
```ruby
|
38
|
+
fancy_class.send(:include, fancy_module)
|
39
|
+
|
40
|
+
fancy_class.ancestors # => [Named::Class:Array:FancyClass:0x7fa9ea8aaea8,
|
41
|
+
# Named::Module:FancyModule:0x7fa9ea9e6178,
|
42
|
+
# Named::Class, Named::Naming,
|
43
|
+
# Array, Kernel, BasicObject]
|
44
|
+
|
45
|
+
instance = fancy_class.new
|
46
|
+
|
47
|
+
instance.module_method # => 'Hello from the module'
|
48
|
+
instance.class_method # => 'Hello from the class'
|
49
|
+
|
50
|
+
```
|
4
51
|
|
5
52
|
## Installation
|
6
53
|
|
@@ -16,10 +63,6 @@ Or install it yourself as:
|
|
16
63
|
|
17
64
|
$ gem install named
|
18
65
|
|
19
|
-
## Usage
|
20
|
-
|
21
|
-
TODO: Write usage instructions here
|
22
|
-
|
23
66
|
## Contributing
|
24
67
|
|
25
68
|
1. Fork it
|
data/Rakefile
CHANGED
data/lib/named.rb
CHANGED
data/lib/named/class.rb
CHANGED
@@ -1,26 +1,27 @@
|
|
1
1
|
module Named
|
2
2
|
module Class
|
3
|
-
include Naming
|
4
|
-
|
5
3
|
def self.new(name, superclass = Object, &block)
|
6
4
|
::Class.new(superclass, &block).tap do |klass|
|
5
|
+
klass.extend(self) # adds support for is_a?
|
7
6
|
klass.extend(ClassMethods)
|
8
|
-
klass.send(:include,
|
7
|
+
klass.send(:include, InstanceMethods)
|
9
8
|
klass.name = name
|
10
9
|
end
|
11
10
|
end
|
12
11
|
|
13
12
|
module ClassMethods
|
14
|
-
include Naming
|
13
|
+
include Inspection, Naming
|
15
14
|
|
16
15
|
def to_s
|
17
16
|
[Named::Class, superclass, name, inspect_object_id].join(':')
|
18
17
|
end
|
19
18
|
end
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
module InstanceMethods
|
21
|
+
include Inspection
|
22
|
+
def to_s
|
23
|
+
"#<#{self.class}:#{inspect_object_id}>".sub(":#{self.class.inspect_object_id}", '')
|
24
|
+
end
|
24
25
|
end
|
25
26
|
end
|
26
27
|
end
|
data/lib/named/module.rb
CHANGED
data/lib/named/naming.rb
CHANGED
data/lib/named/version.rb
CHANGED
data/named.gemspec
CHANGED
@@ -18,7 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler",
|
22
|
-
spec.add_development_dependency "rspec",
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rspec", "~> 2.13"
|
23
|
+
spec.add_development_dependency "simplecov", "~> 0.7"
|
23
24
|
spec.add_development_dependency "rake"
|
24
25
|
end
|
data/spec/named/class_spec.rb
CHANGED
@@ -1,7 +1,73 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Named::Class do
|
4
|
+
let(:subject) { Named::Class.new("Spec Class") { attr_accessor :foo } }
|
5
|
+
|
4
6
|
it "is a module" do
|
5
7
|
expect(Named::Class).to be_a(Module)
|
6
8
|
end
|
9
|
+
|
10
|
+
it "is a Named::Class" do
|
11
|
+
expect(subject).to be_a(Named::Class)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "class creation" do
|
15
|
+
it "has the provided code block as its body" do
|
16
|
+
expect(subject.new).to respond_to(:foo)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "classes" do
|
21
|
+
describe "to_s" do
|
22
|
+
it "starts with Named::Class" do
|
23
|
+
expect(subject.to_s).to start_with 'Named::Class'
|
24
|
+
end
|
25
|
+
|
26
|
+
it "includes the given module name" do
|
27
|
+
expect(subject.to_s).to include("Spec Class")
|
28
|
+
end
|
29
|
+
|
30
|
+
it "ends with the properly formatted object id" do
|
31
|
+
expect(subject.to_s).to end_with(subject.inspect_object_id)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "inspect" do
|
36
|
+
it "is the same as to_s" do
|
37
|
+
expect(subject.to_s).to eq subject.inspect
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "instances" do
|
43
|
+
let(:instance) { subject.new }
|
44
|
+
|
45
|
+
it "is not a Named::Class" do
|
46
|
+
expect(instance).not_to be_a(Named::Class)
|
47
|
+
end
|
48
|
+
|
49
|
+
it "does not have a name accessor" do
|
50
|
+
expect(instance).not_to respond_to(:name)
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "to_s" do
|
54
|
+
it "starts with Named::Class" do
|
55
|
+
expect(instance.to_s).to start_with '#<Named::Class'
|
56
|
+
end
|
57
|
+
|
58
|
+
it "includes the given module name" do
|
59
|
+
expect(instance.to_s).to include("Spec Class")
|
60
|
+
end
|
61
|
+
|
62
|
+
it "ends with the properly formatted object id" do
|
63
|
+
expect(instance.to_s).to end_with("#{instance.inspect_object_id}>")
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "inspect" do
|
68
|
+
it "is the same as to_s" do
|
69
|
+
expect(instance.to_s).to eq instance.inspect
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
7
73
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Named::Inspection do
|
4
|
+
let(:subject) { Class.new.extend(described_class) }
|
5
|
+
|
6
|
+
it "properly formats object ids" do
|
7
|
+
_, hex_object_id = subject.inspect_object_id.split('x')
|
8
|
+
expect(subject.inspect).to include hex_object_id
|
9
|
+
end
|
10
|
+
end
|
data/spec/named/module_spec.rb
CHANGED
@@ -1,7 +1,38 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Named::Module do
|
4
|
+
|
5
|
+
let(:subject) { Named::Module.new("Spec Module") { attr_accessor :foo } }
|
6
|
+
|
4
7
|
it "is a class" do
|
5
8
|
expect(Named::Module).to be_a(Class)
|
6
9
|
end
|
10
|
+
|
11
|
+
describe "module creation" do
|
12
|
+
before(:each) { subject.extend(subject) }
|
13
|
+
|
14
|
+
it "has the provided code block as its body" do
|
15
|
+
expect(subject).to respond_to(:foo)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "to_s" do
|
20
|
+
it "starts with Named::Module" do
|
21
|
+
expect(subject.to_s).to start_with 'Named::Module'
|
22
|
+
end
|
23
|
+
|
24
|
+
it "includes the given module name" do
|
25
|
+
expect(subject.to_s).to include("Spec Module")
|
26
|
+
end
|
27
|
+
|
28
|
+
it "ends with the properly formatted object id" do
|
29
|
+
expect(subject.to_s).to end_with(subject.inspect_object_id)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "inspect" do
|
34
|
+
it "is the same as to_s" do
|
35
|
+
expect(subject.to_s).to eq subject.inspect
|
36
|
+
end
|
37
|
+
end
|
7
38
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Named::Naming do
|
4
|
+
let(:subject) { Class.new.extend(described_class) }
|
5
|
+
|
6
|
+
it "adds a name getter" do
|
7
|
+
expect(subject).to respond_to :name
|
8
|
+
end
|
9
|
+
|
10
|
+
it "adds a name setter" do
|
11
|
+
expect(subject).to respond_to :name=
|
12
|
+
end
|
13
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: named
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -44,6 +44,22 @@ dependencies:
|
|
44
44
|
- - ~>
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '2.13'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: simplecov
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.7'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0.7'
|
47
63
|
- !ruby/object:Gem::Dependency
|
48
64
|
name: rake
|
49
65
|
requirement: !ruby/object:Gem::Requirement
|
@@ -76,12 +92,15 @@ files:
|
|
76
92
|
- Rakefile
|
77
93
|
- lib/named.rb
|
78
94
|
- lib/named/class.rb
|
95
|
+
- lib/named/inspection.rb
|
79
96
|
- lib/named/module.rb
|
80
97
|
- lib/named/naming.rb
|
81
98
|
- lib/named/version.rb
|
82
99
|
- named.gemspec
|
83
100
|
- spec/named/class_spec.rb
|
101
|
+
- spec/named/inspection_spec.rb
|
84
102
|
- spec/named/module_spec.rb
|
103
|
+
- spec/named/naming_spec.rb
|
85
104
|
- spec/spec_helper.rb
|
86
105
|
homepage: https://github.com/adamhunter/named
|
87
106
|
licenses:
|
@@ -98,7 +117,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
98
117
|
version: '0'
|
99
118
|
segments:
|
100
119
|
- 0
|
101
|
-
hash:
|
120
|
+
hash: 2605474607335762517
|
102
121
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
122
|
none: false
|
104
123
|
requirements:
|
@@ -107,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
126
|
version: '0'
|
108
127
|
segments:
|
109
128
|
- 0
|
110
|
-
hash:
|
129
|
+
hash: 2605474607335762517
|
111
130
|
requirements: []
|
112
131
|
rubyforge_project:
|
113
132
|
rubygems_version: 1.8.23
|
@@ -117,5 +136,7 @@ summary: Allows providing a name when creating an anonymous module or class usin
|
|
117
136
|
Named::Module.new or Named::Class.new
|
118
137
|
test_files:
|
119
138
|
- spec/named/class_spec.rb
|
139
|
+
- spec/named/inspection_spec.rb
|
120
140
|
- spec/named/module_spec.rb
|
141
|
+
- spec/named/naming_spec.rb
|
121
142
|
- spec/spec_helper.rb
|