facade 1.2.1 → 1.2.2

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
  SHA256:
3
- metadata.gz: 42771164aefacf1b7c99fa78f8866d528cbea326409d4556829a003a61e800d6
4
- data.tar.gz: ad610e31ab2859ace230866dbdbf9495c10a2e7485907850ede95084bb156244
3
+ metadata.gz: 5e4a3d5ec80c68a69aa30d40587d8107e37458dee62192b0d2f678a4a42ab66f
4
+ data.tar.gz: 60d20595449e828bc62c1c635b34aad152a8ac8d8e0873bfac6a3a8433c566cf
5
5
  SHA512:
6
- metadata.gz: 60ffd93871099bdb05f26d21d115c3ecbd00677634c1c0eb1e906c00d72d487e3d6a9b290b05df4e16cf06a30b2cb5142588ecef361b6c77a4ae1a3774f393da
7
- data.tar.gz: 2f232f9a8f6e1643704434d234975676fc98d543cca66474f96b8543600f0430718928db3f17b9b61d26fa1cca1ee34ea11f14b67f39b3e2f9d38b7ca9773f7f
6
+ metadata.gz: 8b62c6fdc06d9ca5aefd0f3eaf3fccf9ad5fa5c6ad2e541a090bb2169e2c1bf6c3ed2cb7c1faf89b6bd47f2f9efc50f91ed899a5885177ba1ba5c19c64da52ea
7
+ data.tar.gz: 8043f0294e36f4af47dcca481498b6c34263237447a1c1432825f36614521be46a65ed14f86d35459f38ece8dc608ea0be7f42be1c6f6b86e3bc88948b4417bc
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGES.md CHANGED
@@ -1,6 +1,10 @@
1
- ## 1.2.1 - 10-Oct-2020
2
- * Remove the old test file and directory, oops. Thanks go to Michael Crusoe
3
- for the spot.
1
+ ## 1.2.2 - 24-Nov-2025
2
+ * Cache an extended object internally to avoid unnecessary, repeated calls.
3
+ * Minor spec update.
4
+
5
+ ## 1.2.1 - 16-Feb-2024
6
+ * Mainly rubocop cleanup.
7
+ * Apparently I forgot to bump the version when I did this, oops.
4
8
 
5
9
  ## 1.2.0 - 30-Sep-2020
6
10
  * Switched from test-unit to rspec, and added a Gemfile.
data/Gemfile CHANGED
@@ -1,6 +1,2 @@
1
- source 'https://rubygems.org' do
2
- gem 'rake'
3
- group 'test' do
4
- gem 'rspec', '~> 3.9'
5
- end
6
- end
1
+ source 'https://rubygems.org'
2
+ gemspec
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Ruby](https://github.com/djberg96/facade/actions/workflows/ruby.yml/badge.svg)](https://github.com/djberg96/facade/actions/workflows/ruby.yml)
2
+
1
3
  ## Synopsis
2
4
  An easy way to implement the facade pattern in your classes. In short,
3
5
  this library wraps singleton methods from another class as instance
@@ -5,9 +7,12 @@ methods of the current class.
5
7
 
6
8
  ## Installation
7
9
  `gem install facade`
10
+
11
+ ## Adding the trusted cert
12
+ `gem cert --add <(curl -Ls https://raw.githubusercontent.com/djberg96/facade/main/certs/djberg96_pub.pem)`
8
13
 
9
14
  ## Usage
10
- ```
15
+ ```ruby
11
16
  require 'facade'
12
17
 
13
18
  class MyString < String
@@ -26,7 +31,7 @@ Eero Saynatkari, Eric Hodel and Michael Granger for ideas and code which I
26
31
  shamelessly plagiarized.
27
32
 
28
33
  ## Copyright
29
- Copyright (c) 2005-2020 Daniel J. Berger
34
+ Copyright (c) 2005-2023 Daniel J. Berger
30
35
 
31
36
  ## License
32
37
  Apache-2.0
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ namespace :gem do
8
8
  desc 'Create the facade gem'
9
9
  task :create => [:clean] do
10
10
  require 'rubygems/package'
11
- spec = eval(IO.read('facade.gemspec'))
11
+ spec = Gem::Specification.load('facade.gemspec')
12
12
  spec.signing_key = File.join(Dir.home, '.ssh', 'gem-private_key.pem')
13
13
  Gem::Package.build(spec)
14
14
  end
@@ -21,6 +21,8 @@ namespace :gem do
21
21
  end
22
22
 
23
23
  desc "Run the test suite"
24
- RSpec::Core::RakeTask.new(:spec)
24
+ RSpec::Core::RakeTask.new(:spec) do |t|
25
+ t.rspec_opts = "-f documentation"
26
+ end
25
27
 
26
28
  task :default => :spec
data/facade.gemspec CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'facade'
5
- spec.version = '1.2.1'
5
+ spec.version = '1.2.2'
6
6
  spec.author = 'Daniel J. Berger'
7
7
  spec.license = 'Apache-2.0'
8
8
  spec.email = 'djberg96@gmail.com'
@@ -16,12 +16,13 @@ Gem::Specification.new do |spec|
16
16
  spec.add_development_dependency('rspec', '~> 3.9')
17
17
 
18
18
  spec.metadata = {
19
- 'homepage_uri' => 'https://github.com/djberg96/facade',
20
- 'bug_tracker_uri' => 'https://github.com/djberg96/facade/issues',
21
- 'changelog_uri' => 'https://github.com/djberg96/facade/blob/master/CHANGES',
22
- 'documentation_uri' => 'https://github.com/djberg96/facade/wiki',
23
- 'source_code_uri' => 'https://github.com/djberg96/facade',
24
- 'wiki_uri' => 'https://github.com/djberg96/facade/wiki'
19
+ 'homepage_uri' => 'https://github.com/djberg96/facade',
20
+ 'bug_tracker_uri' => 'https://github.com/djberg96/facade/issues',
21
+ 'changelog_uri' => 'https://github.com/djberg96/facade/blob/main/CHANGES.md',
22
+ 'documentation_uri' => 'https://github.com/djberg96/facade/wiki',
23
+ 'source_code_uri' => 'https://github.com/djberg96/facade',
24
+ 'wiki_uri' => 'https://github.com/djberg96/facade/wiki',
25
+ 'rubygems_mfa_required' => 'true'
25
26
  }
26
27
 
27
28
  spec.description = <<-EOF
data/lib/facade.rb CHANGED
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Facade
2
4
  # The version of the facade library
3
- FACADE_VERSION = '1.2.1'.freeze
5
+ FACADE_VERSION = '1.2.2'
4
6
 
5
7
  # The facade method will forward a singleton method as an instance
6
8
  # method of the extending class. If no arguments are provided, then all
@@ -13,8 +15,8 @@ module Facade
13
15
  # require 'facade'
14
16
  #
15
17
  # class MyString < String
16
- # extend Facade
17
- # facade File, :dirname, :basename
18
+ # extend Facade
19
+ # facade File, :dirname, :basename
18
20
  # end
19
21
  #
20
22
  # s = MyString.new('/home/djberge')
@@ -25,31 +27,24 @@ module Facade
25
27
  methods = methods.flatten
26
28
 
27
29
  if methods.empty? # Default to all methods
28
- if klass.kind_of?(Class)
29
- methods = klass.methods(false)
30
- else
31
- methods = klass.public_instance_methods(false)
32
- end
30
+ methods = klass.is_a?(Class) ? klass.methods(false) : klass.public_instance_methods(false)
33
31
  end
34
32
 
35
- # Convert all strings to symbols to stay sane between 1.8.x and 1.9.x
36
- methods = methods.map{ |m| m.to_sym }
37
- methods -= self.instance_methods.map{ |m| m.to_sym } # No clobber
33
+ methods -= instance_methods.map(&:to_sym) # No clobber
38
34
 
39
- methods.each do |methname|
40
- define_method(methname){
41
- if klass.kind_of?(Class)
42
- meth = klass.method(methname)
43
- else
44
- meth = Object.new.extend(klass).method(methname)
45
- end
35
+ # Cache the extended object for modules to avoid creating it on every call
36
+ mod_proxy = klass.is_a?(Module) && !klass.is_a?(Class) ? Object.new.extend(klass) : nil
37
+
38
+ methods.each do |method_name|
39
+ define_method(method_name) do
40
+ meth = klass.is_a?(Class) ? klass.method(method_name) : mod_proxy.method(method_name)
46
41
 
47
- if meth.arity.zero? # Zero or one argument
42
+ if meth.arity.zero?
48
43
  meth.call
49
44
  else
50
45
  meth.call(self)
51
46
  end
52
- }
47
+ end
53
48
  end
54
49
  end
55
50
  end
data/spec/facade_spec.rb CHANGED
@@ -28,7 +28,7 @@ RSpec.describe Facade do
28
28
  let(:string) { facade.new('/home/whatever') }
29
29
 
30
30
  example "facade module has expected version set and it's frozen" do
31
- expect(Facade::FACADE_VERSION).to eq('1.2.1')
31
+ expect(Facade::FACADE_VERSION).to eq('1.2.2')
32
32
  expect(Facade::FACADE_VERSION).to be_frozen
33
33
  end
34
34
 
@@ -54,7 +54,7 @@ RSpec.describe Facade do
54
54
  expect(string.blockdev?).to eq('test')
55
55
  end
56
56
 
57
- example "module_methods" do
57
+ example "module methods behave as expected" do
58
58
  expect(string).to respond_to(:testme)
59
59
  expect(string.testme).to eq('/home/whatever')
60
60
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,11 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facade
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel J. Berger
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain:
11
10
  - |
@@ -35,7 +34,7 @@ cert_chain:
35
34
  ORVCZpRuCPpmC8qmqxUnARDArzucjaclkxjLWvCVHeFa9UP7K3Nl9oTjJNv+7/jM
36
35
  WZs4eecIcUc4tKdHxcAJ0MO/Dkqq7hGaiHpwKY76wQ1+8xAh
37
36
  -----END CERTIFICATE-----
38
- date: 2020-10-10 00:00:00.000000000 Z
37
+ date: 1980-01-02 00:00:00.000000000 Z
39
38
  dependencies:
40
39
  - !ruby/object:Gem::Dependency
41
40
  name: rake
@@ -89,11 +88,11 @@ licenses:
89
88
  metadata:
90
89
  homepage_uri: https://github.com/djberg96/facade
91
90
  bug_tracker_uri: https://github.com/djberg96/facade/issues
92
- changelog_uri: https://github.com/djberg96/facade/blob/master/CHANGES
91
+ changelog_uri: https://github.com/djberg96/facade/blob/main/CHANGES.md
93
92
  documentation_uri: https://github.com/djberg96/facade/wiki
94
93
  source_code_uri: https://github.com/djberg96/facade
95
94
  wiki_uri: https://github.com/djberg96/facade/wiki
96
- post_install_message:
95
+ rubygems_mfa_required: 'true'
97
96
  rdoc_options: []
98
97
  require_paths:
99
98
  - lib
@@ -108,8 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
107
  - !ruby/object:Gem::Version
109
108
  version: '0'
110
109
  requirements: []
111
- rubygems_version: 3.1.4
112
- signing_key:
110
+ rubygems_version: 3.6.9
113
111
  specification_version: 4
114
112
  summary: An easy way to implement the facade pattern in your class
115
113
  test_files:
metadata.gz.sig CHANGED
Binary file