polyfill 1.8.0 → 1.9.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
  SHA256:
3
- metadata.gz: 055be265874af4c56f4902c479982779ac2db965d666553ccf5f22ba6fb31fb7
4
- data.tar.gz: 139e5bb51a76000559dbb71560e10f32c7eaed37faa8c1dbd7fbc0e8be91dcee
3
+ metadata.gz: 96b0596352a22f8cf5311876f9fcf37056e58252fbeddcf85b068b64e32e2e59
4
+ data.tar.gz: fa748caa7b534b92beb1f02d74e30d734917311cd4d4354381bd62a9bfe93b49
5
5
  SHA512:
6
- metadata.gz: 603bd2a32b554f123d602fc455a5c970c9309530a8f585a51d6feeba8044887f24baecb4d56bbdb9881eaec6f02c7e9babadd406132c5c3d591fb5991b2f458e
7
- data.tar.gz: 2ab11f404cdc0d19d46fd17560a18fff30fc7e8c94144fd7960e22f9525c00a3159c2297d294be3856e08f1978cdd75b48dbeea685aa1122e4affc9a5652ac05
6
+ metadata.gz: aa297f71b043d1456cf28810ebf8daa89745ca035a3b00c315f4097d0dc187500a549754e83fb2ddd36db8f7306837530ccb08ac8dae146f64bb5a3950f8283b
7
+ data.tar.gz: e3535ed0e215f4afe322636d51d250a5dbfb0d153fd84d32874bc923411465f9590eca111cb0d7f675aecd7b98d6c86aa642661bae85b2346b81828d79ba81b3
@@ -1,8 +1,9 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.6.2
4
- - 2.5.5
5
- - 2.4.5
6
- - 2.3.8
7
- - 2.2.10
8
- - 2.1.10
3
+ - 2.7
4
+ - 2.6
5
+ - 2.5
6
+ - 2.4
7
+ - 2.3
8
+ - 2.2
9
+ - 2.1
@@ -1,4 +1,10 @@
1
- # [1.8.0][] (TBD)
1
+ # [1.9.0][] (2020-12-12)
2
+
3
+ ## Added
4
+
5
+ - Added support for repeatable srb runs from the sorbet gem.
6
+
7
+ # [1.8.0][] (2019-09-02)
2
8
 
3
9
  ## Added
4
10
 
@@ -288,6 +294,7 @@ incorrect type was passed:
288
294
  - v2.4 String#concat?
289
295
  - v2.4 String#prepend?
290
296
 
297
+ [1.9.0]: https://github.com/AaronLasseigne/polyfill/compare/v1.8.0...v1.9.0
291
298
  [1.8.0]: https://github.com/AaronLasseigne/polyfill/compare/v1.7.0...v1.8.0
292
299
  [1.7.0]: https://github.com/AaronLasseigne/polyfill/compare/v1.6.0...v1.7.0
293
300
  [1.6.0]: https://github.com/AaronLasseigne/polyfill/compare/v1.5.0...v1.6.0
data/README.md CHANGED
@@ -3,6 +3,8 @@
3
3
  [![Version](https://img.shields.io/gem/v/polyfill.svg?style=flat-square)](https://rubygems.org/gems/polyfill)
4
4
  [![Build](https://img.shields.io/travis/AaronLasseigne/polyfill.svg?style=flat-square)](https://travis-ci.org/AaronLasseigne/polyfill)
5
5
 
6
+ **This gem is no longer supported. I'd recommend exploring [ruby-next](https://github.com/ruby-next/ruby-next) as a replacement.**
7
+
6
8
  Polyfill implements newer Ruby features into older versions. If the Ruby
7
9
  version already supports the polyfill then calling it does nothing. This is
8
10
  designed to allow gem maintainers to use newer methods and gain their
@@ -28,7 +30,7 @@ monkey patching** that may cause issues outside of your use.
28
30
  Add it to your Gemfile:
29
31
 
30
32
  ```ruby
31
- gem 'polyfill', '~> 1.8'
33
+ gem 'polyfill', '~> 1.9'
32
34
  ```
33
35
 
34
36
  Or install it manually:
@@ -1,5 +1,5 @@
1
- require 'polyfill/version'
2
- require 'polyfill/internal_utils'
1
+ require_relative 'polyfill/version'
2
+ require_relative 'polyfill/internal_utils'
3
3
 
4
4
  module Polyfill
5
5
  module Module; end
@@ -9,10 +9,12 @@ module Polyfill
9
9
  raise ArgumentError, "#{module_name} is a class not a module"
10
10
  end
11
11
 
12
+ version_option = options.delete(:version)
13
+
12
14
  #
13
15
  # parse options
14
16
  #
15
- versions = InternalUtils.polyfill_versions_to_use(options.delete(:version))
17
+ versions = InternalUtils.polyfill_versions_to_use(version_option)
16
18
 
17
19
  unless options.empty?
18
20
  raise ArgumentError, "unknown keyword: #{options.first[0]}"
@@ -35,7 +37,7 @@ module Polyfill
35
37
  #
36
38
  # build the module to return
37
39
  #
38
- InternalUtils.create_module do |mod|
40
+ InternalUtils.create_module(module_name, methods, options, version_option) do |mod|
39
41
  # make sure the methods get added if this module is included
40
42
  mod.singleton_class.send(:define_method, :included) do |base|
41
43
  modules.each do |module_to_add|
@@ -90,7 +92,7 @@ def Polyfill(options = {}) # rubocop:disable Naming/MethodName
90
92
  #
91
93
  # build the module to return
92
94
  #
93
- Polyfill::InternalUtils.create_module do |mod|
95
+ Polyfill::InternalUtils.create_module(options) do |mod|
94
96
  objects.each do |object_name, methods|
95
97
  #
96
98
  # find all polyfills for the object across all versions
@@ -234,8 +236,8 @@ def Polyfill(options = {}) # rubocop:disable Naming/MethodName
234
236
  end
235
237
  end
236
238
 
237
- require 'polyfill/v2_2'
238
- require 'polyfill/v2_3'
239
- require 'polyfill/v2_4'
240
- require 'polyfill/v2_5'
241
- require 'polyfill/v2_6'
239
+ require_relative 'polyfill/v2_2'
240
+ require_relative 'polyfill/v2_3'
241
+ require_relative 'polyfill/v2_4'
242
+ require_relative 'polyfill/v2_5'
243
+ require_relative 'polyfill/v2_6'
@@ -83,15 +83,30 @@ module Polyfill
83
83
  end
84
84
  module_function :methods_to_keep
85
85
 
86
- def create_module
87
- mod = ::Module.new
88
-
89
- yield(mod)
90
-
91
- Polyfill::Module.const_set("M#{mod.object_id}", mod)
86
+ def create_module(*args)
87
+ module_name = namify_arguments(*args)
88
+
89
+ if ::Polyfill::Module.const_defined?(module_name, false)
90
+ ::Polyfill::Module.const_get(module_name, false)
91
+ else
92
+ mod = ::Module.new
93
+ yield(mod)
94
+ ::Polyfill::Module.const_set(module_name, mod)
95
+ end
92
96
  end
93
97
  module_function :create_module
94
98
 
99
+ def namify_arguments(*args)
100
+ string = args.map(&:inspect).join
101
+ # we don't need this to be decodable,
102
+ # we just need a consistent class-nameable output for a consistent arbitrary input
103
+ # safest module name is: start with capital then, A-Za-z0-9_
104
+ encoded = [string].pack('m0')
105
+ .gsub(%r{[+/=]}, '+' => '_1', '/' => '_2', '=' => '_')
106
+ "M#{encoded}"
107
+ end
108
+ module_function :namify_arguments
109
+
95
110
  def to_str(obj)
96
111
  begin
97
112
  unless obj.respond_to?(:to_str)
@@ -1,3 +1,3 @@
1
1
  module Polyfill
2
- VERSION = Gem::Version.new('1.8.0'.freeze)
2
+ VERSION = Gem::Version.new('1.9.0'.freeze)
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polyfill
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Lasseigne
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-02 00:00:00.000000000 Z
11
+ date: 2020-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -52,7 +52,7 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.57.0
55
- description:
55
+ description:
56
56
  email:
57
57
  - aaron.lasseigne@gmail.com
58
58
  executables: []
@@ -135,7 +135,7 @@ homepage: ''
135
135
  licenses:
136
136
  - MIT
137
137
  metadata: {}
138
- post_install_message:
138
+ post_install_message:
139
139
  rdoc_options: []
140
140
  require_paths:
141
141
  - lib
@@ -150,8 +150,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  - !ruby/object:Gem::Version
151
151
  version: '0'
152
152
  requirements: []
153
- rubygems_version: 3.0.3
154
- signing_key:
153
+ rubygems_version: 3.1.4
154
+ signing_key:
155
155
  specification_version: 4
156
156
  summary: Adds newer Ruby methods to older versions.
157
157
  test_files: []