polyfill 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -0
- data/README.md +72 -69
- data/lib/polyfill/internal_utils.rb +9 -0
- data/lib/polyfill/v2_2.rb +3 -0
- data/lib/polyfill/v2_2/math.rb +19 -0
- data/lib/polyfill/v2_2/prime.rb +14 -0
- data/lib/polyfill/v2_3.rb +2 -0
- data/lib/polyfill/v2_3/prime.rb +16 -0
- data/lib/polyfill/v2_4/i_p_addr.rb +2 -2
- data/lib/polyfill/v2_5.rb +4 -0
- data/lib/polyfill/v2_5/big_decimal.rb +13 -0
- data/lib/polyfill/v2_5/dir.rb +27 -0
- data/lib/polyfill/v2_5/integer.rb +30 -0
- data/lib/polyfill/v2_5/time.rb +24 -0
- data/lib/polyfill/version.rb +1 -1
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dcf78a0e3232a09956c63e330dceee6477e1ca817175ca288f3c728564918a8b
|
4
|
+
data.tar.gz: 9d70ef2d07ba52b3105d8dd0a900a257f7a5c71b0a49e56b783e67d16441fba6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7ddd097309f6a251144437baf7994baf8f15d85634137eb1cf880d4a119b57ab8c532a7bfad61523cb3e58c2f9802c5b06857985c7574dfa55b55ef4382be50
|
7
|
+
data.tar.gz: 5be3401b05404a346b7867ece1ef315a1acbddaa343df576803d3c8f84cf46dd2a746cefe957207ab70a89a997ef8fdfc12360329644a93f67ca7fa5310db7d7
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
# Master
|
2
2
|
|
3
|
+
# [1.2.0][] (2018-03-05)
|
4
|
+
|
5
|
+
## Added
|
6
|
+
|
7
|
+
- v2.5 BigDecimal#clone
|
8
|
+
- v2.5 BigDecimal#dup
|
9
|
+
- v2.5 Dir.children
|
10
|
+
- v2.5 Dir.each_child
|
11
|
+
- v2.5 Integer.sqrt
|
12
|
+
- v2.5 Time.at
|
13
|
+
- v2.3 Prime.prime?
|
14
|
+
- v2.2 Math.log
|
15
|
+
- v2.2 Prime.prime?
|
16
|
+
|
3
17
|
# [1.1.0][] (2018-02-23)
|
4
18
|
|
5
19
|
## Added
|
@@ -214,6 +228,7 @@ incorrect type was passed:
|
|
214
228
|
- v2.4 String#concat?
|
215
229
|
- v2.4 String#prepend?
|
216
230
|
|
231
|
+
[1.2.0]: https://github.com/AaronLasseigne/polyfill/compare/v1.1.0...v1.2.0
|
217
232
|
[1.1.0]: https://github.com/AaronLasseigne/polyfill/compare/v1.0.1...v1.1.0
|
218
233
|
[1.0.1]: https://github.com/AaronLasseigne/polyfill/compare/v1.0.0...v1.0.1
|
219
234
|
[1.0.0]: https://github.com/AaronLasseigne/polyfill/compare/v0.10.0...v1.0.0
|
data/README.md
CHANGED
@@ -27,7 +27,7 @@ monkey patching** that may cause issues outside of your use.
|
|
27
27
|
Add it to your Gemfile:
|
28
28
|
|
29
29
|
```ruby
|
30
|
-
gem 'polyfill', '~> 1.
|
30
|
+
gem 'polyfill', '~> 1.2'
|
31
31
|
```
|
32
32
|
|
33
33
|
Or install it manually:
|
@@ -51,7 +51,7 @@ This project uses [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
51
51
|
With the `Polyfill` method, you can polyfill methods for one or more Ruby
|
52
52
|
objects. Each object is passed as a key. The value is an array of strings
|
53
53
|
containing the methods you would like to polyfill. Instance methods need to
|
54
|
-
start with
|
54
|
+
start with "#" and class methods need to start with ".".
|
55
55
|
|
56
56
|
```ruby
|
57
57
|
using Polyfill(
|
@@ -136,10 +136,10 @@ though they have techically changed. `FrozenError` is a subclass of
|
|
136
136
|
|:-:| ---------------- | ------------------------ | ------- |
|
137
137
|
| ✗ | Array | #append | New (alias for `push`)
|
138
138
|
| ✗ | | #prepend | New (alias for `unshift`)
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
139
|
+
| ✓ | BigDecimal | #clone | Returns the receiver itself instead of making a new instance.
|
140
|
+
| ✓ | | #dup | Returns the receiver itself instead of making a new instance.
|
141
|
+
| ✓ | Dir | .children | New
|
142
|
+
| ✓ | | .each_child | New
|
143
143
|
| ✗ | | #glob | Accepts a new optional keyword argument, `:base`.
|
144
144
|
| ✗ | Enumerable | #any? | Accepts a pattern argument.
|
145
145
|
| ✗ | | #all? | Accepts a pattern argument.
|
@@ -165,7 +165,7 @@ though they have techically changed. `FrozenError` is a subclass of
|
|
165
165
|
| ✓ | | #nobits? | New
|
166
166
|
| ✗ | | #pow | Same as `**` but it accepts an optional modulo argument for calculating modular exponentiation.
|
167
167
|
| ✓ | | #round | Always return an Integer.
|
168
|
-
|
|
168
|
+
| ✓ | | .sqrt | New
|
169
169
|
| ✓ | | #truncate | Always return an Integer.
|
170
170
|
| ✗ | IO | #pread | New
|
171
171
|
| ✗ | | #pwrite | New
|
@@ -230,7 +230,7 @@ though they have techically changed. `FrozenError` is a subclass of
|
|
230
230
|
| ✗ | Struct | .new | Accepts a new optional keyword argument, `:keyword_init`.
|
231
231
|
| ✗ | Thread | #fetch | New
|
232
232
|
| ✗ | | #name= | Description set by `Thread#name=` is now visible on Windows 10.
|
233
|
-
|
|
233
|
+
| ✓ | Time | .at | Accepts a third argument which specifies the unit of the second argument.
|
234
234
|
| ✗ | URI | .open | New (alias of `Kernel.open`)
|
235
235
|
| ✗ | Zlib::GzipWriter | #write | Accepts multiple arguments.
|
236
236
|
|
@@ -249,59 +249,59 @@ though they have techically changed. `FrozenError` is a subclass of
|
|
249
249
|
| ✗ | CSV | #new | Accepts a new optional keyword argument, `liberal_parsing`.
|
250
250
|
| ✓ | Dir | .empty? | New
|
251
251
|
| ✓ | Enumerable | #chunk | Calling without a block returns an enumerator.
|
252
|
-
| ✓ | | #sum |
|
253
|
-
| ✓ | | #uniq |
|
254
|
-
| ✓ | Enumerator::Lazy | #chunk_while |
|
255
|
-
| ✓ | | #uniq |
|
256
|
-
| ✓ | File | .empty? |
|
257
|
-
| ✗ | FileTest | .empty? |
|
252
|
+
| ✓ | | #sum | New
|
253
|
+
| ✓ | | #uniq | New
|
254
|
+
| ✓ | Enumerator::Lazy | #chunk_while | New
|
255
|
+
| ✓ | | #uniq | New
|
256
|
+
| ✓ | File | .empty? | New (alias of `zero?`)
|
257
|
+
| ✗ | FileTest | .empty? | New (alias of `zero?`)
|
258
258
|
| ✓ | Float | #ceil | Accepts an optional digits argument.
|
259
259
|
| ✓ | | #floor | Accepts an optional digits argument.
|
260
260
|
| ✗ | | #round | Accepts an optional digits argument and provides a new optional keyword argument, `half`.
|
261
261
|
| ✓ | | #truncate | Accepts an optional digits argument.
|
262
|
-
| ✓ | Hash | #compact |
|
263
|
-
| ✓ | | #compact! |
|
264
|
-
| ✓ | | #transform_values |
|
265
|
-
| ✓ | | #transform_values! |
|
262
|
+
| ✓ | Hash | #compact | New
|
263
|
+
| ✓ | | #compact! | New
|
264
|
+
| ✓ | | #transform_values | New
|
265
|
+
| ✓ | | #transform_values! | New
|
266
266
|
| ✓ | Integer | #ceil | Accepts an optional digits argument.
|
267
|
-
| ✓ | | #digits |
|
267
|
+
| ✓ | | #digits | New
|
268
268
|
| ✓ | | #floor | Accepts an optional digits argument.
|
269
269
|
| ✓ | | #round | Accepts an optional digits argument and provides a new optional keyword argument, `half`.
|
270
270
|
| ✓ | | #truncate | Accepts an optional digits argument.
|
271
271
|
| ✓ | IO | #each_line | Accepts a new optional keyword argument, `chomp`.
|
272
272
|
| ✓ | | .foreach | Accepts a new optional keyword argument, `chomp`.
|
273
273
|
| ✓ | | #gets | Accepts a new optional keyword argument, `chomp`.
|
274
|
-
| ✓ | | #lines |
|
275
|
-
| ✓ | | #readline |
|
276
|
-
| ✓ | | #readlines |
|
274
|
+
| ✓ | | #lines | Accepts a new optional keyword argument, `chomp`.
|
275
|
+
| ✓ | | #readline | Accepts a new optional keyword argument, `chomp`.
|
276
|
+
| ✓ | | #readlines | Accepts a new optional keyword argument, `chomp`.
|
277
277
|
| ✓ | | .readlines | Accepts a new optional keyword argument, `chomp`.
|
278
278
|
| ✓ | IPAddr | #== | No longer raises an exception if coercion fails.
|
279
279
|
| ✓ | | #<=> | No longer raises an exception if coercion fails.
|
280
280
|
| ✗ | Kernel | #send | Supports refined methods.
|
281
|
-
| ✗ | Logger | #new |
|
282
|
-
| ✓ | MatchData | #named_captures |
|
281
|
+
| ✗ | Logger | #new | Allow specifying logger parameters in constructor such as `level`, `progname`, `datetime_format`, `formatter`. Add `shift_period_suffix` option.
|
282
|
+
| ✓ | MatchData | #named_captures | New
|
283
283
|
| ✓ | | #values_at | Supports named captures.
|
284
284
|
| ✗ | Module | #refine | Accepts a module as an argument.
|
285
|
-
| ✗ | | .used_modules |
|
285
|
+
| ✗ | | .used_modules | New
|
286
286
|
| ✗ | Net::HTTP | #post | New
|
287
287
|
| ✗ | Net::FTP | #new | Supports hash style options.
|
288
288
|
| ✗ | | #status | Accepts a new optional keyword argument, `pathname`.
|
289
|
-
| ✓ | Numeric | #clone |
|
290
|
-
| ✓ | | #dup |
|
291
|
-
| ✓ | | #finite? |
|
292
|
-
| ✓ | | #infinite? |
|
293
|
-
| ✓ | Object | #clone |
|
294
|
-
| ✗ | OptionParser | #order |
|
295
|
-
| ✗ | | #order! |
|
296
|
-
| ✗ | | #parse |
|
297
|
-
| ✗ | | #parse! |
|
298
|
-
| ✗ | | #permute |
|
299
|
-
| ✗ | | #permute! |
|
300
|
-
| ✓ | Pathname | #empty? |
|
301
|
-
| ✗ | Readline | #quoting_detection_proc |
|
302
|
-
| ✗ | | #quoting_detection_proc= |
|
289
|
+
| ✓ | Numeric | #clone | Returns self instead of raising an error.
|
290
|
+
| ✓ | | #dup | Returns self instead of raising an error.
|
291
|
+
| ✓ | | #finite? | New
|
292
|
+
| ✓ | | #infinite? | New
|
293
|
+
| ✓ | Object | #clone | Accepts a new optional keyword argument, `freeze`.
|
294
|
+
| ✗ | OptionParser | #order | Accepts a new optional keyword argument, `into`.
|
295
|
+
| ✗ | | #order! | Accepts a new optional keyword argument, `into`.
|
296
|
+
| ✗ | | #parse | Accepts a new optional keyword argument, `into`.
|
297
|
+
| ✗ | | #parse! | Accepts a new optional keyword argument, `into`.
|
298
|
+
| ✗ | | #permute | Accepts a new optional keyword argument, `into`.
|
299
|
+
| ✗ | | #permute! | Accepts a new optional keyword argument, `into`.
|
300
|
+
| ✓ | Pathname | #empty? | New
|
301
|
+
| ✗ | Readline | #quoting_detection_proc | New
|
302
|
+
| ✗ | | #quoting_detection_proc= | New
|
303
303
|
| ✗ | REXML::Element | #[] | If `String` or `Symbol` is specified, attribute value is returned. Otherwise, Nth child is returned.
|
304
|
-
| ✗ | Rational | #round |
|
304
|
+
| ✗ | Rational | #round | Accepts a new optional keyword argument, `half`.
|
305
305
|
| ✓ | Regexp | #match? | New
|
306
306
|
| ✗ | Set | #compare_by_identity | New
|
307
307
|
| ✗ | | #compare_by_identity? | New
|
@@ -313,12 +313,12 @@ though they have techically changed. `FrozenError` is a subclass of
|
|
313
313
|
| ✗ | | #downcase! | Supports Unicode and accepts several new keyword arguments.
|
314
314
|
| ✓ | | #each_line | Accepts a new optional keyword argument, `chomp`.
|
315
315
|
| ✓ | | #lines | Accepts a new optional keyword argument, `chomp`.
|
316
|
-
| ✓ | | #match? |
|
316
|
+
| ✓ | | #match? | New
|
317
317
|
| P | | .new | Accepts a new optional keyword argument, `capacity`. **Differences:** Allows `:capacity` option to pass but does nothing with it.
|
318
318
|
| ✓ | | #prepend | Now accepts multiple arguments.
|
319
319
|
| ✗ | | #swapcase | Supports Unicode and accepts several new keyword arguments.
|
320
320
|
| ✗ | | #swapcase! | Supports Unicode and accepts several new keyword arguments.
|
321
|
-
| ✓ | | #unpack1 |
|
321
|
+
| ✓ | | #unpack1 | New
|
322
322
|
| ✗ | | #upcase | Supports Unicode and accepts several new keyword arguments.
|
323
323
|
| ✗ | | #upcase! | Supports Unicode and accepts several new keyword arguments.
|
324
324
|
| ✓ | StringIO | #each_line | Accepts a new optional keyword argument, `chomp`.
|
@@ -330,16 +330,18 @@ though they have techically changed. `FrozenError` is a subclass of
|
|
330
330
|
| P | | #casecmp? | New **Differences:** Does not support Unicode characters.
|
331
331
|
| ✗ | | #downcase | Supports Unicode and accepts several new keyword arguments.
|
332
332
|
| ✗ | | #downcase! | Supports Unicode and accepts several new keyword arguments.
|
333
|
-
| ✓ | | #match |
|
334
|
-
| ✓ | | #match? |
|
333
|
+
| ✓ | | #match | Now returns `MatchData` instead of match position.
|
334
|
+
| ✓ | | #match? | New
|
335
335
|
| ✗ | | #swapcase | Supports Unicode and accepts several new keyword arguments.
|
336
336
|
| ✗ | | #swapcase! | Supports Unicode and accepts several new keyword arguments.
|
337
|
-
| ✗ | | #to_proc |
|
337
|
+
| ✗ | | #to_proc | Supports refinements.
|
338
338
|
| ✗ | | #upcase | Supports Unicode and accepts several new keyword arguments.
|
339
339
|
| ✗ | | #upcase! | Supports Unicode and accepts several new keyword arguments.
|
340
|
-
| ✗ | Thread | #report\_on\_exception |
|
341
|
-
| ✗ | |
|
342
|
-
| ✗ |
|
340
|
+
| ✗ | Thread | #report\_on\_exception | New
|
341
|
+
| ✗ | | #report\_on\_exception= | New
|
342
|
+
| ✗ | | .report\_on\_exception | New
|
343
|
+
| ✗ | | .report\_on\_exception= | New
|
344
|
+
| ✗ | TracePoint | #callee_id | New
|
343
345
|
| ✗ | Warning | #warn | New
|
344
346
|
|
345
347
|
### 2.3
|
@@ -347,7 +349,7 @@ though they have techically changed. `FrozenError` is a subclass of
|
|
347
349
|
| | Object | Method | Changes |
|
348
350
|
|:-:| ----------------------- | ------------------------ | ------- |
|
349
351
|
| ✗ | ARGF | #read_nonblock | Accepts a new optional keyword argument, `exception`.
|
350
|
-
| ✗ | Array | #bsearch_index |
|
352
|
+
| ✗ | Array | #bsearch_index | New
|
351
353
|
| ✓ | | #dig | New
|
352
354
|
| ✗ | | #flatten | No longer calls `to_ary` on elements beyond the given level.
|
353
355
|
| ✗ | | #flatten! | No longer calls `to_ary` on elements beyond the given level.
|
@@ -362,18 +364,18 @@ though they have techically changed. `FrozenError` is a subclass of
|
|
362
364
|
| ✗ | Comparable | #== | No longer rescues exceptions.
|
363
365
|
| ✗ | Coverage | .peek_result | New
|
364
366
|
| ✗ | Enumerable | #chunk | No longer accepts the `initial_state` keyword argument.
|
365
|
-
| ✓ | | #chunk_while |
|
367
|
+
| ✓ | | #chunk_while | New
|
366
368
|
| ✓ | | #grep_v | New
|
367
369
|
| ✓ | | #slice_before | No longer accepts the `initial_state` keyword argument.
|
368
370
|
| ✓ | Enumerator::Lazy | #grep_v | New
|
369
|
-
| ✗ | File | .mkfifo |
|
371
|
+
| ✗ | File | .mkfifo | New
|
370
372
|
| ✗ | File::Stat | #ino | On Windows, it always returned `0`, but now returns `BY_HANDLE_FILE_INFORMATION.nFileIndexHigh/Low`.
|
371
|
-
| ✗ | Hash | #< |
|
372
|
-
| ✗ | | #<= |
|
373
|
-
| ✗ | | #> |
|
374
|
-
| ✗ | | #>= |
|
373
|
+
| ✗ | Hash | #< | New
|
374
|
+
| ✗ | | #<= | New
|
375
|
+
| ✗ | | #> | New
|
376
|
+
| ✗ | | #>= | New
|
375
377
|
| ✓ | | #dig | New
|
376
|
-
| ✓ | | #fetch_values |
|
378
|
+
| ✓ | | #fetch_values | New
|
377
379
|
| ✗ | | #inspect | No longer raises an error if its content returns a string which is not compatible with `Encoding.default_external`.
|
378
380
|
| P | | #to_proc | New **Differences:** Works in every respect but returns a `lambda` instead of a `proc`. Returning a `proc` may be an error in MRI's implementation. See: https://bugs.ruby-lang.org/issues/12671)
|
379
381
|
| ✗ | IO | #advise | No longer raises Errno::ENOSYS in cases where it was detected at build time but not available at runtime.
|
@@ -381,10 +383,10 @@ though they have techically changed. `FrozenError` is a subclass of
|
|
381
383
|
| ✗ | | #each_codepoint | Raises an exception at incomplete character before EOF when conversion takes place.
|
382
384
|
| ✗ | | #wait_readable | No longer checks FIONREAD.
|
383
385
|
| ✓ | Kernel | #loop | When stopped by a StopIteration exception, returns what the enumerator has returned instead of nil.
|
384
|
-
| ✗ | Logger | #level= |
|
386
|
+
| ✗ | Logger | #level= | New
|
385
387
|
| ✗ | | #reopen | New
|
386
388
|
| ✗ | Module | #define_method | Now requires a method body, `Proc`, `Method`, or a block.
|
387
|
-
| ✗ | | #deprecate_constant |
|
389
|
+
| ✗ | | #deprecate_constant | New
|
388
390
|
| ✗ | NameError | #receiver | New
|
389
391
|
| ✗ | Net::FTP | .default_passive= | New
|
390
392
|
| ✗ | | #mlst | New
|
@@ -400,9 +402,10 @@ though they have techically changed. `FrozenError` is a subclass of
|
|
400
402
|
| ✗ | | .internal_super_of | New
|
401
403
|
| ✗ | OpenSSL::SSL::SSLSocket | #accept_nonblock | Accepts a new keyword argument, `exception`.
|
402
404
|
| ✗ | | #connect_nonblock | Accepts a new keyword argument, `exception`.
|
403
|
-
| ✗ | Pathname | #ascend |
|
404
|
-
| ✗ | | #descend |
|
405
|
-
|
|
405
|
+
| ✗ | Pathname | #ascend | Returns an enumerator if no block is given.
|
406
|
+
| ✗ | | #descend | Returns an enumerator if no block is given.
|
407
|
+
| ✓ | Prime | .prime? | `ArgumentError` message says that an integer is expected instead of it being a comparison error.
|
408
|
+
| ✗ | Queue | #close | New
|
406
409
|
| ✗ | Socket | #accept_nonblock | Accepts a new keyword argument, `exception`.
|
407
410
|
| ✗ | | #connect_nonblock | Accepts a new keyword argument, `exception`.
|
408
411
|
| ✓ | String | #+@ | New
|
@@ -440,16 +443,16 @@ though they have techically changed. `FrozenError` is a subclass of
|
|
440
443
|
| ✗ | | #birthtime | New
|
441
444
|
| ✗ | File::Stat | #birthtime | New
|
442
445
|
| ✗ | Find | .find | Accepts a new optional keyword argument, `ignore_error`.
|
443
|
-
| ✗ | GC | .latest_gc_info |
|
444
|
-
| ✗ | | .stat |
|
445
|
-
| ✗ | IO | #each_codepoint |
|
446
|
+
| ✗ | GC | .latest_gc_info | Returns `:state` to represent current GC status.
|
447
|
+
| ✗ | | .stat | Some keys were renamed and new keys were added.
|
448
|
+
| ✗ | IO | #each_codepoint | Raises an exception at incomplete character before EOF when conversion takes place.
|
446
449
|
| ✗ | | #nonblock_read | Supports pipes on Windows.
|
447
450
|
| ✗ | | #nonblock_write | Supports pipes on Windows.
|
448
451
|
| ✗ | | #pathconf | New
|
449
452
|
| ✓ | Kernel | #itself | New
|
450
453
|
| ✗ | | #throw | Raises `UncaughtThrowError`, subclass of `ArgumentError` when there is no corresponding catch block, instead of `ArgumentError`.
|
451
454
|
| ✗ | Math | .atan2 | Now returns values like as expected by C99 if both two arguments are infinity.
|
452
|
-
|
|
455
|
+
| ✓ | | .log | Now raises `Math::DomainError` instead of returning `NaN` if the base is less than 0, and returns `NaN` instead of -infinity if both of two arguments are 0.
|
453
456
|
| ✗ | Matrix | #+@ | New
|
454
457
|
| ✗ | | #-@ | New
|
455
458
|
| ✗ | | #adjugate | New
|
@@ -462,16 +465,16 @@ though they have techically changed. `FrozenError` is a subclass of
|
|
462
465
|
| ✗ | | #vstack | New
|
463
466
|
| ✗ | Method | #curry | New
|
464
467
|
| ✗ | | #super_method | New
|
465
|
-
| ✗ | ObjectSpace | .memsize_of |
|
468
|
+
| ✗ | ObjectSpace | .memsize_of | Returns a size including sizeof(RVALUE).
|
466
469
|
| ✗ | Pathname | #/ | New (alias of `#+`)
|
467
470
|
| ✗ | | #birthtime | New
|
468
471
|
| ✗ | | #find | Accepts a new optional keyword argument, `ignore_error`.
|
469
|
-
|
|
470
|
-
| ✗ | Process | .spawn |
|
472
|
+
| ✓ | Prime | .prime? | Now returns `false` for negative numbers.
|
473
|
+
| ✗ | Process | .spawn | Opens the file in write mode for redirect from `[:out, :err]`.
|
471
474
|
| ✗ | String | #unicode_normalize | New
|
472
475
|
| ✗ | | #unicode_normalize! | New
|
473
476
|
| ✗ | | #unicode_normalized? | New
|
474
|
-
| ✗ | Time | .httpdate |
|
477
|
+
| ✗ | Time | .httpdate | Always produces a UTC `Time` object.
|
475
478
|
| ✗ | | .parse | May produce fixed-offset `Time` objects.
|
476
479
|
| ✗ | | .rfc2822 | May produce fixed-offset `Time` objects.
|
477
480
|
| ✗ | | .strptime | May produce fixed-offset `Time` objects. Raises `ArgumentError` when there is no date information.
|
@@ -108,5 +108,14 @@ module Polyfill
|
|
108
108
|
obj.to_int
|
109
109
|
end
|
110
110
|
module_function :to_int
|
111
|
+
|
112
|
+
def to_f(obj)
|
113
|
+
unless obj.respond_to?(:to_f)
|
114
|
+
raise TypeError, "no implicit conversion of #{obj.class} into Float"
|
115
|
+
end
|
116
|
+
|
117
|
+
obj.to_f
|
118
|
+
end
|
119
|
+
module_function :to_f
|
111
120
|
end
|
112
121
|
end
|
data/lib/polyfill/v2_2.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
module Polyfill
|
2
|
+
module V2_2
|
3
|
+
module Math
|
4
|
+
module ClassMethods
|
5
|
+
def log(*args)
|
6
|
+
if (base = args[1])
|
7
|
+
base = InternalUtils.to_f(base)
|
8
|
+
raise ::Math::DomainError, 'Numerical argument is out of domain - "log"' if base < 0
|
9
|
+
|
10
|
+
x = args[0]
|
11
|
+
return 0 / 0.0 if base == 0 && InternalUtils.to_f(x) == 0
|
12
|
+
end
|
13
|
+
|
14
|
+
super
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/polyfill/v2_3.rb
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
module Polyfill
|
2
|
+
module V2_3
|
3
|
+
module Prime
|
4
|
+
module ClassMethods
|
5
|
+
def prime?(*args)
|
6
|
+
value = args.first
|
7
|
+
unless value.is_a?(::Integer)
|
8
|
+
raise ArgumentError, "Expected an integer, got #{value}"
|
9
|
+
end
|
10
|
+
|
11
|
+
super
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/polyfill/v2_5.rb
CHANGED
@@ -1,7 +1,11 @@
|
|
1
|
+
require_relative 'v2_5/dir'
|
1
2
|
require_relative 'v2_5/hash'
|
2
3
|
require_relative 'v2_5/integer'
|
3
4
|
require_relative 'v2_5/kernel'
|
4
5
|
require_relative 'v2_5/string'
|
6
|
+
require_relative 'v2_5/time'
|
7
|
+
|
8
|
+
require_relative 'v2_5/big_decimal'
|
5
9
|
|
6
10
|
module Polyfill
|
7
11
|
module V2_5
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Polyfill
|
2
|
+
module V2_5
|
3
|
+
module Dir
|
4
|
+
module ClassMethods
|
5
|
+
def children(dirname, encoding: Encoding.find('filesystem'))
|
6
|
+
entries(dirname, encoding: encoding) - %w[. ..]
|
7
|
+
end
|
8
|
+
|
9
|
+
def each_child(dirname, encoding: Encoding.find('filesystem'))
|
10
|
+
unless block_given?
|
11
|
+
return ::Enumerator.new do |yielder|
|
12
|
+
(entries(dirname, encoding: encoding) - %w[. ..]).each do |filename|
|
13
|
+
yielder.yield(filename)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
(entries(dirname, encoding: encoding) - %w[. ..]).each do |filename|
|
19
|
+
yield(filename)
|
20
|
+
end
|
21
|
+
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,8 +1,38 @@
|
|
1
|
+
require 'bigdecimal'
|
2
|
+
|
1
3
|
module Polyfill
|
2
4
|
module V2_5
|
3
5
|
module Integer
|
4
6
|
using Polyfill(Integer: %w[#ceil #floor #round #truncate], version: '2.4')
|
5
7
|
|
8
|
+
module ClassMethods
|
9
|
+
def sqrt(n)
|
10
|
+
n = InternalUtils.to_int(n)
|
11
|
+
if n < 0
|
12
|
+
raise Math::DomainError, 'Numerical argument is out of domain - "isqrt"'
|
13
|
+
end
|
14
|
+
|
15
|
+
res = 0
|
16
|
+
bit = 1 << ((n.size * 8) - 2)
|
17
|
+
|
18
|
+
bit >>= 2 while bit > n
|
19
|
+
|
20
|
+
while bit != 0
|
21
|
+
res_bit = res + bit
|
22
|
+
if n >= res_bit
|
23
|
+
n -= res_bit
|
24
|
+
res = (res >> 1) + bit
|
25
|
+
else
|
26
|
+
res >>= 1
|
27
|
+
end
|
28
|
+
|
29
|
+
bit >>= 2
|
30
|
+
end
|
31
|
+
|
32
|
+
res
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
6
36
|
def ceil(*)
|
7
37
|
super.to_i
|
8
38
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Polyfill
|
2
|
+
module V2_5
|
3
|
+
module Time
|
4
|
+
module ClassMethods
|
5
|
+
def at(*args)
|
6
|
+
if args.size < 3 || args[2] == :microsecond || args[2] == :usec
|
7
|
+
return super(*args.first(2))
|
8
|
+
end
|
9
|
+
|
10
|
+
seconds, partial_seconds, unit = args
|
11
|
+
|
12
|
+
case unit
|
13
|
+
when :millisecond
|
14
|
+
super(seconds, partial_seconds * 1000)
|
15
|
+
when :nanosecond, :nsec
|
16
|
+
super(seconds, partial_seconds / 1000.0)
|
17
|
+
else
|
18
|
+
raise ArgumentError, "unexpected unit: #{unit}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/polyfill/version.rb
CHANGED
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.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Lasseigne
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-03-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -90,6 +90,8 @@ files:
|
|
90
90
|
- lib/polyfill/v2_2.rb
|
91
91
|
- lib/polyfill/v2_2/enumerable.rb
|
92
92
|
- lib/polyfill/v2_2/kernel.rb
|
93
|
+
- lib/polyfill/v2_2/math.rb
|
94
|
+
- lib/polyfill/v2_2/prime.rb
|
93
95
|
- lib/polyfill/v2_2/vector.rb
|
94
96
|
- lib/polyfill/v2_3.rb
|
95
97
|
- lib/polyfill/v2_3/array.rb
|
@@ -98,6 +100,7 @@ files:
|
|
98
100
|
- lib/polyfill/v2_3/hash.rb
|
99
101
|
- lib/polyfill/v2_3/kernel.rb
|
100
102
|
- lib/polyfill/v2_3/numeric.rb
|
103
|
+
- lib/polyfill/v2_3/prime.rb
|
101
104
|
- lib/polyfill/v2_3/string.rb
|
102
105
|
- lib/polyfill/v2_3/struct.rb
|
103
106
|
- lib/polyfill/v2_4.rb
|
@@ -121,10 +124,13 @@ files:
|
|
121
124
|
- lib/polyfill/v2_4/string_io.rb
|
122
125
|
- lib/polyfill/v2_4/symbol.rb
|
123
126
|
- lib/polyfill/v2_5.rb
|
127
|
+
- lib/polyfill/v2_5/big_decimal.rb
|
128
|
+
- lib/polyfill/v2_5/dir.rb
|
124
129
|
- lib/polyfill/v2_5/hash.rb
|
125
130
|
- lib/polyfill/v2_5/integer.rb
|
126
131
|
- lib/polyfill/v2_5/kernel.rb
|
127
132
|
- lib/polyfill/v2_5/string.rb
|
133
|
+
- lib/polyfill/v2_5/time.rb
|
128
134
|
- lib/polyfill/version.rb
|
129
135
|
- polyfill.gemspec
|
130
136
|
homepage: ''
|