facade 1.1.1 → 1.2.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/{CHANGES → CHANGES.md} +16 -9
- data/Gemfile +6 -0
- data/{MANIFEST → MANIFEST.md} +2 -1
- data/README.md +40 -0
- data/Rakefile +5 -8
- data/facade.gemspec +3 -3
- data/lib/facade.rb +1 -1
- data/spec/facade_spec.rb +61 -0
- metadata +27 -14
- metadata.gz.sig +0 -0
- data/README +0 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6717943e139c8af4bb62fc7403ec46f4539820dde024a56b14bf7d3433e77d1b
|
4
|
+
data.tar.gz: fa4c4ed14f9369a422417a2bd688e44c7a0b6f5143e4b12f82ffbd0219e443fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b376fc1f69f81c881772f6bccc4fad631af784d9b9f05865cc481b807ec6bf6cc03de603d62fca414e949c3c6b2e86ad17e5b83acd25085f93b84852408ee0aa
|
7
|
+
data.tar.gz: 8602a3a44236e99b90e10a38a59145f9f03f5469fd0782cbe60226b8b38a2d42f3160872e26d7585ba9e65c73efba752c79b42522bfc0c7db6be533dd555c96c
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/{CHANGES → CHANGES.md}
RENAMED
@@ -1,39 +1,46 @@
|
|
1
|
-
|
1
|
+
## 1.2.0 - 30-Sep-2020
|
2
|
+
* Switched from test-unit to rspec, and added a Gemfile.
|
3
|
+
* Use markdown for text files.
|
4
|
+
|
5
|
+
## 1.1.1 - 2-Jun-2020
|
6
|
+
* Added a LICENSE file as per the Apache-2.0 requirements.
|
7
|
+
|
8
|
+
## 1.1.0 - 28-Jan-2019
|
2
9
|
* License switched to Apache-2.0.
|
3
10
|
* The FACADE_VERSION constant is now frozen.
|
4
11
|
* Added some metadata to the gemspec.
|
5
12
|
* Updated the cert, should be good for about 10 years.
|
6
13
|
|
7
|
-
|
14
|
+
## 1.0.7 - 9-Sep-2015
|
8
15
|
* This gem is now signed.
|
9
16
|
* The Rakefile tasks now assume Rubygems 2.x.
|
10
17
|
|
11
|
-
|
18
|
+
## 1.0.6 - 12-Oct-2014
|
12
19
|
* Updates to the gemspec and Rakefile.
|
13
20
|
|
14
|
-
|
21
|
+
## 1.0.5 - 10-Nov-2010
|
15
22
|
* Refactored the Rakefile.
|
16
23
|
|
17
|
-
|
24
|
+
## 1.0.4 - 3-Aug-2009
|
18
25
|
* Fixed a symbol vs string issue for Ruby 1.9.x.
|
19
26
|
|
20
|
-
|
27
|
+
## 1.0.3 - 21-Jul-2009
|
21
28
|
* License changed to Artistic 2.0.
|
22
29
|
* Documentation updates.
|
23
30
|
* Test file renamed to test_facade.rb.
|
24
31
|
* Some Rakefile and gemspec updates
|
25
32
|
* One test modified so that it passes with 1.9.x as well.
|
26
33
|
|
27
|
-
|
34
|
+
## 1.0.2 - 11-Jun-2007
|
28
35
|
* Added a Rakefile with tasks for installation and testing.
|
29
36
|
* Removed the install.rb file. Installation is now handled as a Rake task.
|
30
37
|
* Some test suite refactoring.
|
31
38
|
* Fixed the FACADE_VERSION number (now 1.0.2, was 1.1.0).
|
32
39
|
|
33
|
-
|
40
|
+
## 1.0.1 - 8-Jun-2005
|
34
41
|
* Moved project to RubyForge.
|
35
42
|
* Added a .gemspec file.
|
36
43
|
* Added a MANIFEST.
|
37
44
|
|
38
|
-
|
45
|
+
## 1.0.0 - 18-May-2005
|
39
46
|
* Initial release
|
data/Gemfile
ADDED
data/{MANIFEST → MANIFEST.md}
RENAMED
data/README.md
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
## Synopsis
|
2
|
+
An easy way to implement the facade pattern in your classes. In short,
|
3
|
+
this library wraps singleton methods from another class as instance
|
4
|
+
methods of the current class.
|
5
|
+
|
6
|
+
## Installation
|
7
|
+
`gem install facade`
|
8
|
+
|
9
|
+
## Usage
|
10
|
+
```
|
11
|
+
require 'facade'
|
12
|
+
|
13
|
+
class MyString < String
|
14
|
+
extend Facade
|
15
|
+
facade Dir # extend all methods
|
16
|
+
facade File, :dirname, :basename # extend only specified methods
|
17
|
+
end
|
18
|
+
|
19
|
+
f = MyString.new('/home/djberge')
|
20
|
+
puts f.basename # 'djberge'
|
21
|
+
puts f.dirname # '/home'
|
22
|
+
```
|
23
|
+
|
24
|
+
## Acknowledgements
|
25
|
+
Eero Saynatkari, Eric Hodel and Michael Granger for ideas and code which I
|
26
|
+
shamelessly plagiarized.
|
27
|
+
|
28
|
+
## Copyright
|
29
|
+
Copyright (c) 2005-2020 Daniel J. Berger
|
30
|
+
|
31
|
+
## License
|
32
|
+
Apache-2.0
|
33
|
+
|
34
|
+
## Warranty
|
35
|
+
This package is provided "as is" and without any express or
|
36
|
+
implied warranties, including, without limitation, the implied
|
37
|
+
warranties of merchantability and fitness for a particular purpose
|
38
|
+
|
39
|
+
## Author
|
40
|
+
Daniel J. Berger
|
data/Rakefile
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'rake'
|
2
2
|
require 'rake/clean'
|
3
|
-
require '
|
3
|
+
require 'rspec/core/rake_task'
|
4
4
|
|
5
|
-
CLEAN.include("**/*.gem", "**/*.rbc")
|
5
|
+
CLEAN.include("**/*.gem", "**/*.rbc", "**/*.lock")
|
6
6
|
|
7
7
|
namespace :gem do
|
8
8
|
desc 'Create the facade gem'
|
@@ -20,10 +20,7 @@ namespace :gem do
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
t.verbose = true
|
26
|
-
t.warning = true
|
27
|
-
end
|
23
|
+
desc "Run the test suite"
|
24
|
+
RSpec::Core::RakeTask.new(:spec)
|
28
25
|
|
29
|
-
task :default => :
|
26
|
+
task :default => :spec
|
data/facade.gemspec
CHANGED
@@ -2,18 +2,18 @@ require 'rubygems'
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = 'facade'
|
5
|
-
spec.version = '1.
|
5
|
+
spec.version = '1.2.0'
|
6
6
|
spec.author = 'Daniel J. Berger'
|
7
7
|
spec.license = 'Apache-2.0'
|
8
8
|
spec.email = 'djberg96@gmail.com'
|
9
9
|
spec.homepage = 'https://github.com/djberg96/facade'
|
10
10
|
spec.summary = 'An easy way to implement the facade pattern in your class'
|
11
|
-
spec.test_file = '
|
11
|
+
spec.test_file = 'spec/facade_spec.rb'
|
12
12
|
spec.files = Dir['**/*'].reject{ |f| f.include?('git') }
|
13
13
|
spec.cert_chain = ['certs/djberg96_pub.pem']
|
14
14
|
|
15
|
-
spec.extra_rdoc_files = ['README', 'CHANGES', 'MANIFEST']
|
16
15
|
spec.add_development_dependency('rake')
|
16
|
+
spec.add_development_dependency('rspec', '~> 3.9')
|
17
17
|
|
18
18
|
spec.metadata = {
|
19
19
|
'homepage_uri' => 'https://github.com/djberg96/facade',
|
data/lib/facade.rb
CHANGED
data/spec/facade_spec.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
########################################################################
|
2
|
+
# facade_spec.rb
|
3
|
+
#
|
4
|
+
# Specs for the Facade module. This test suite should be run via the
|
5
|
+
# the 'rake spec' task.
|
6
|
+
########################################################################
|
7
|
+
require 'rspec'
|
8
|
+
require 'facade'
|
9
|
+
|
10
|
+
RSpec.describe Facade do
|
11
|
+
let(:facade) do
|
12
|
+
module FooModule
|
13
|
+
def testme(str); str; end
|
14
|
+
end
|
15
|
+
|
16
|
+
Class.new(String) do |klass|
|
17
|
+
klass.extend Facade
|
18
|
+
facade File, :basename, 'dirname'
|
19
|
+
facade Dir
|
20
|
+
facade FooModule
|
21
|
+
|
22
|
+
def blockdev?
|
23
|
+
'test'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
let(:string) { facade.new('/home/whatever') }
|
29
|
+
|
30
|
+
example "facade module has expected version set and it's frozen" do
|
31
|
+
expect(Facade::FACADE_VERSION).to eq('1.2.0')
|
32
|
+
expect(Facade::FACADE_VERSION).to be_frozen
|
33
|
+
end
|
34
|
+
|
35
|
+
example "facade instance responds only to specified singleton methods" do
|
36
|
+
expect(string).to respond_to(:basename)
|
37
|
+
expect(string).to respond_to(:dirname)
|
38
|
+
expect{ string.executable? }.to raise_error(NoMethodError)
|
39
|
+
expect{ string.chardev? }.to raise_error(NoMethodError)
|
40
|
+
end
|
41
|
+
|
42
|
+
example "File singleton methods are implemented as instance methods and return the expected value" do
|
43
|
+
expect(string.basename).to eq('whatever')
|
44
|
+
expect(string.dirname).to eq('/home')
|
45
|
+
end
|
46
|
+
|
47
|
+
example "all Dir singleton methods are implemented as instance methods" do
|
48
|
+
expect(string).to respond_to(:pwd)
|
49
|
+
expect(string).to respond_to(:entries)
|
50
|
+
end
|
51
|
+
|
52
|
+
example "facade does not clobber predefined methods" do
|
53
|
+
expect(string).to respond_to(:blockdev?)
|
54
|
+
expect(string.blockdev?).to eq('test')
|
55
|
+
end
|
56
|
+
|
57
|
+
example "module_methods" do
|
58
|
+
expect(string).to respond_to(:testme)
|
59
|
+
expect(string.testme).to eq('/home/whatever')
|
60
|
+
end
|
61
|
+
end
|
metadata
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: facade
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel J. Berger
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain:
|
11
11
|
- |
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
ORVCZpRuCPpmC8qmqxUnARDArzucjaclkxjLWvCVHeFa9UP7K3Nl9oTjJNv+7/jM
|
36
36
|
WZs4eecIcUc4tKdHxcAJ0MO/Dkqq7hGaiHpwKY76wQ1+8xAh
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2020-
|
38
|
+
date: 2020-09-30 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: rake
|
@@ -51,25 +51,38 @@ dependencies:
|
|
51
51
|
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '0'
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: rspec
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '3.9'
|
61
|
+
type: :development
|
62
|
+
prerelease: false
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '3.9'
|
54
68
|
description: |2
|
55
69
|
The facade library allows you to mixin singleton methods from classes
|
56
70
|
or modules as instance methods of the extending class.
|
57
71
|
email: djberg96@gmail.com
|
58
72
|
executables: []
|
59
73
|
extensions: []
|
60
|
-
extra_rdoc_files:
|
61
|
-
- README
|
62
|
-
- CHANGES
|
63
|
-
- MANIFEST
|
74
|
+
extra_rdoc_files: []
|
64
75
|
files:
|
65
|
-
- CHANGES
|
76
|
+
- CHANGES.md
|
77
|
+
- Gemfile
|
66
78
|
- LICENSE
|
67
|
-
- MANIFEST
|
68
|
-
- README
|
79
|
+
- MANIFEST.md
|
80
|
+
- README.md
|
69
81
|
- Rakefile
|
70
82
|
- certs/djberg96_pub.pem
|
71
83
|
- facade.gemspec
|
72
84
|
- lib/facade.rb
|
85
|
+
- spec/facade_spec.rb
|
73
86
|
- test/test_facade.rb
|
74
87
|
homepage: https://github.com/djberg96/facade
|
75
88
|
licenses:
|
@@ -81,7 +94,7 @@ metadata:
|
|
81
94
|
documentation_uri: https://github.com/djberg96/facade/wiki
|
82
95
|
source_code_uri: https://github.com/djberg96/facade
|
83
96
|
wiki_uri: https://github.com/djberg96/facade/wiki
|
84
|
-
post_install_message:
|
97
|
+
post_install_message:
|
85
98
|
rdoc_options: []
|
86
99
|
require_paths:
|
87
100
|
- lib
|
@@ -96,9 +109,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
109
|
- !ruby/object:Gem::Version
|
97
110
|
version: '0'
|
98
111
|
requirements: []
|
99
|
-
rubygems_version: 3.
|
100
|
-
signing_key:
|
112
|
+
rubygems_version: 3.1.4
|
113
|
+
signing_key:
|
101
114
|
specification_version: 4
|
102
115
|
summary: An easy way to implement the facade pattern in your class
|
103
116
|
test_files:
|
104
|
-
-
|
117
|
+
- spec/facade_spec.rb
|
metadata.gz.sig
CHANGED
Binary file
|
data/README
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
== Synopsis
|
2
|
-
An easy way to implement the facade pattern in your classes. In short,
|
3
|
-
this library wraps singleton methods from another class as instance
|
4
|
-
methods of the current class.
|
5
|
-
|
6
|
-
== Installation
|
7
|
-
gem install facade
|
8
|
-
|
9
|
-
== Usage
|
10
|
-
require 'facade'
|
11
|
-
|
12
|
-
class MyString < String
|
13
|
-
extend Facade
|
14
|
-
facade File, :dirname, :basename
|
15
|
-
end
|
16
|
-
|
17
|
-
f = MyString.new('/home/djberge')
|
18
|
-
puts f.basename # 'djberge'
|
19
|
-
puts f.dirname # '/home'
|
20
|
-
|
21
|
-
== Acknowledgements
|
22
|
-
Eero Saynatkari, Eric Hodel and Michael Granger for ideas and code which I
|
23
|
-
shamelessly plagiarized.
|
24
|
-
|
25
|
-
== Copyright
|
26
|
-
Copyright (c) 2005-2019 Daniel J. Berger
|
27
|
-
|
28
|
-
== License
|
29
|
-
Apache-2.0
|
30
|
-
|
31
|
-
== Warranty
|
32
|
-
This package is provided "as is" and without any express or
|
33
|
-
implied warranties, including, without limitation, the implied
|
34
|
-
warranties of merchantability and fitness for a particular purpose
|
35
|
-
|
36
|
-
== Author
|
37
|
-
Daniel J. Berger
|