polyfill-data 1.0.1 → 1.0.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: 80e9e19a876c3cbc13a20fb597baa45c3a5a17938c20b6cee2853facfbba5381
4
- data.tar.gz: 9e64aea3b7c8a184a5887645ed4755268344a417a05676b96d51a6f9e16314ca
3
+ metadata.gz: 156f764bced601a2ebf8cc7a6ee095d63a4d3f813ee3e9fe7c3b273ce68f007f
4
+ data.tar.gz: d7425307509c331ac61c33541da58effcbbb1f5b6ce675ede734b27c2acf0ed3
5
5
  SHA512:
6
- metadata.gz: 25002a3731483f15d8a2ddb33ec15a3b023fe92188b29587b4c1155a364c759dd499cd60af701169440c1666852e72959c9403ef69505febb445db71c83feab9
7
- data.tar.gz: 869b512afad6f1e9b8c0d45300ebf69a0bee3ac95cd9fa5763c171866cbde0a0f89664da53fc2a5b840beb9f15950bb686ac85d905a2b4562164c70537fbdaf5
6
+ metadata.gz: 76a56991f1759077af526ef30236fcde606cd7fdc4dd9b5264e6d3012ad02e5a27feafa2dcf6900a54cd47e25525ee221702e07f41b6178f5cbb3cb7c4c2abfc
7
+ data.tar.gz: 995d6359685044724e2fda6a31e8dab8c73cbdee97dc49034ef7c45ee39a04a3a05ab7ec3046f78705e931316e2957a0992cbe3b3a36c1fd7d43794e89ee22ca
checksums.yaml.gz.sig CHANGED
@@ -1 +1,3 @@
1
- ��ec�2�.�_��p�Vy�����3�:~���|�Ϳ�z(,;�*4}���Z�-d2Mnb5]�V���L� 2I�D�H�~]�OH�v��k]�
1
+ l7uT��3���!�(E摡 XnH��CZçBH�����谟NΗެ���dő�i��>����+�GΝC02?�N��Hn��0��l�)N`Ͽ��SX�Vd��g�?0i�-}��H^)�ɼ�S64!J����d���[8j�`�A���Pg����U�o#�ϣ��Y]0hJO��<
2
+ ���dz;��.9����kl�j��$c���L�� $Ru���,�E�;+֏¾[M��kD��Z�1���Œ��'i�.Y@�]b�� aDG�I2@�6)�3Yc
3
+ ��8'/����{�}I�,b� x���~�����?�2�2l�~ψ?I�Ib�CU�xr�&�dƕ�V�Z��� ����v$�҈9�D-a/.�fK�KoN�"�
data/CHANGELOG.md CHANGED
@@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## 1.0.2
9
+
10
+ ### Fixed
11
+
12
+ - freeze after initializing
13
+ - `to_a` removed
14
+ - `deconstruct` fixed to return array in order of members as defined
15
+
8
16
  ## 1.0.1
9
17
 
10
18
  ### Added
data/lib/data.rb CHANGED
@@ -23,18 +23,16 @@ else
23
23
  klass.define_singleton_method(:members) { args.map{ _1.intern } }
24
24
 
25
25
  klass.define_singleton_method(:new) do |*new_args, **new_kwargs, &block|
26
- arg_comparison = new_kwargs.any? ? new_kwargs.keys : new_args
27
- if arg_comparison.size != args.size
28
- raise ArgumentError
26
+
27
+ init_kwargs = if new_args.any?
28
+ Hash[members.take(new_args.size).zip(new_args)]
29
+ else
30
+ new_kwargs
29
31
  end
32
+
30
33
  self.allocate.tap do |instance|
31
- args_to_hash = if !new_kwargs.any?
32
- Hash[members.take(new_args.size).zip(new_args)]
33
- else
34
- new_kwargs
35
- end
36
- instance.send(:initialize, **args_to_hash, &block)
37
- end
34
+ instance.send(:initialize, **init_kwargs, &block)
35
+ end.freeze
38
36
  end
39
37
  class << klass
40
38
  alias_method :[], :new
@@ -57,11 +55,11 @@ else
57
55
  end
58
56
 
59
57
  def initialize(**kwargs)
60
- @attributes = kwargs
58
+ @attributes = Hash[members.map {|m| [m,kwargs[m]] }]
61
59
  end
62
60
 
63
61
  def deconstruct
64
- to_a
62
+ @attributes.values
65
63
  end
66
64
 
67
65
  def deconstruct_keys(array)
@@ -71,10 +69,6 @@ else
71
69
  @attributes.slice(*array)
72
70
  end
73
71
 
74
- def to_a
75
- @attributes.values
76
- end
77
-
78
72
  def to_h(&block)
79
73
  @attributes.to_h(&block)
80
74
  end
@@ -102,7 +96,7 @@ else
102
96
  alias_method :to_s, :inspect
103
97
 
104
98
  def with(**kwargs)
105
- self.class.new(*@attributes.merge(kwargs).values)
99
+ self.class.new(**@attributes.merge(kwargs))
106
100
  end
107
101
  end
108
102
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Polyfill
4
4
  module Data
5
- VERSION = "1.0.1"
5
+ VERSION = "1.0.2"
6
6
  end
7
7
  end
data/test/test_data.rb CHANGED
@@ -118,8 +118,10 @@ class TestData < Minitest::Test
118
118
  assert_equal({foo: 1}, test.deconstruct_keys(%i[foo baz]))
119
119
  assert_raises(TypeError) { test.deconstruct_keys(0) }
120
120
 
121
+ test = klass.new(bar: 2, foo: 1)
121
122
  assert_equal([1, 2], test.deconstruct)
122
- assert_equal([1, 2], test.to_a)
123
+
124
+ assert_predicate(test, :frozen?)
123
125
 
124
126
  assert_kind_of(Integer, test.hash)
125
127
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polyfill-data
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Gay
@@ -34,7 +34,7 @@ cert_chain:
34
34
  dxkiKqcX+yzo9RJLD9l/E1AWX125r1Fhiif4l6ehdl7Vllc3NQUOm1abdmHtCYjw
35
35
  dG3yPWBWzzN4ovoBRqsuTJbF1wjkCjl5ex5KhfYbeDc=
36
36
  -----END CERTIFICATE-----
37
- date: 2023-01-20 00:00:00.000000000 Z
37
+ date: 2023-01-21 00:00:00.000000000 Z
38
38
  dependencies: []
39
39
  description: Add the ruby 3.2 Data class to older rubies
40
40
  email:
@@ -76,7 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
78
  requirements: []
79
- rubygems_version: 3.2.27
79
+ rubygems_version: 3.1.6
80
80
  signing_key:
81
81
  specification_version: 4
82
82
  summary: Add the ruby 3.2 Data class to older rubies
metadata.gz.sig CHANGED
Binary file