backports 3.0.2 → 3.0.3
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.
- data/.travis.yml +13 -0
- data/README.rdoc +1 -0
- data/lib/backports/1.8.7/enumerable.rb +0 -11
- data/lib/backports/1.8.7/regexp.rb +3 -3
- data/lib/backports/1.8.7/string.rb +1 -1
- data/lib/backports/1.9.1/enumerable.rb +13 -2
- data/lib/backports/1.9.1/math.rb +7 -7
- data/lib/backports/version.rb +1 -1
- data/test/std_lib_loading_test.rb +8 -8
- data/test/test__me_first.rb +51 -0
- data/test/test_lazy.rb +1 -0
- metadata +4 -2
data/.travis.yml
ADDED
data/README.rdoc
CHANGED
|
@@ -57,17 +57,6 @@ module Enumerable
|
|
|
57
57
|
ary
|
|
58
58
|
end unless method_defined? :drop_while
|
|
59
59
|
|
|
60
|
-
# Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Enumerable.html]
|
|
61
|
-
if instance_method(:each_with_index).arity.zero?
|
|
62
|
-
def each_with_index_with_optional_args_and_block(*args)
|
|
63
|
-
return to_enum(:each_with_index, *args) unless block_given?
|
|
64
|
-
idx = 0
|
|
65
|
-
each(*args) { |o| yield(o, idx); idx += 1 }
|
|
66
|
-
self
|
|
67
|
-
end
|
|
68
|
-
Backports.alias_method_chain self, :each_with_index, :optional_args_and_block
|
|
69
|
-
end
|
|
70
|
-
|
|
71
60
|
# Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Enumerable.html]
|
|
72
61
|
def find_index(obj = Backports::Undefined)
|
|
73
62
|
if obj != Backports::Undefined
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
class Regexp
|
|
2
2
|
# Standard in Ruby 1.8.7+. See official documentation[http://www.ruby-doc.org/core-1.8.7/classes/Regexp.html]
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
unless (union(%w(a b)) rescue false)
|
|
4
|
+
class << self
|
|
5
5
|
def union_with_array_argument(*arg)
|
|
6
6
|
return union_without_array_argument(*arg) unless arg.size == 1
|
|
7
7
|
union_without_array_argument(*arg.first)
|
|
@@ -9,4 +9,4 @@ class Regexp
|
|
|
9
9
|
Backports.alias_method_chain self, :union, :array_argument
|
|
10
10
|
end
|
|
11
11
|
end
|
|
12
|
-
end
|
|
12
|
+
end
|
|
@@ -79,7 +79,7 @@ class String
|
|
|
79
79
|
end unless method_defined? :start_with?
|
|
80
80
|
|
|
81
81
|
# Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/String.html]
|
|
82
|
-
unless ("abc".upto("def", true) rescue false)
|
|
82
|
+
unless ("abc".upto("def", true){} rescue false)
|
|
83
83
|
def upto_with_exclusive(to, excl=false)
|
|
84
84
|
return upto_without_exclusive(to){|s| yield s} if block_given? && !excl
|
|
85
85
|
enum = Range.new(self, to, excl).to_enum
|
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
module Enumerable
|
|
2
|
-
# Standard in Ruby 1.
|
|
2
|
+
# Standard in Ruby 1.9.1. See official documentation[http://ruby-doc.org/core-1.9/classes/Enumerable.html]
|
|
3
3
|
def each_with_object(memo)
|
|
4
4
|
return to_enum(:each_with_object, memo) unless block_given?
|
|
5
5
|
each {|obj| yield obj, memo}
|
|
6
6
|
memo
|
|
7
7
|
end unless method_defined? :each_with_object
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
# Standard in Ruby 1.9.1. See official documentation[http://ruby-doc.org/core-1.9/classes/Enumerable.html]
|
|
10
|
+
if instance_method(:each_with_index).arity.zero?
|
|
11
|
+
def each_with_index_with_optional_args_and_block(*args)
|
|
12
|
+
return to_enum(:each_with_index, *args) unless block_given?
|
|
13
|
+
idx = 0
|
|
14
|
+
each(*args) { |o| yield(o, idx); idx += 1 }
|
|
15
|
+
self
|
|
16
|
+
end
|
|
17
|
+
Backports.alias_method_chain self, :each_with_index, :optional_args_and_block
|
|
18
|
+
end
|
|
19
|
+
end
|
data/lib/backports/1.9.1/math.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module Math
|
|
2
|
-
|
|
2
|
+
unless (log(2, 2) rescue false)
|
|
3
3
|
# Standard in Ruby 1.9. See official documentation[http://ruby-doc.org/core-1.9/classes/Math.html]
|
|
4
|
-
|
|
4
|
+
class << self
|
|
5
5
|
def log_with_optional_base(numeric, base = Backports::Undefined)
|
|
6
6
|
if base.equal?(Backports::Undefined)
|
|
7
7
|
# Math.log(n) in 1.9.1 no longer accepts string arguments as it
|
|
@@ -15,11 +15,11 @@ module Math
|
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
Backports.alias_method_chain self, :log, :optional_base
|
|
18
|
-
end
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
# Standard in Ruby 1.9. See official documentation[http://ruby-doc.org/core-1.9/classes/Math.html]
|
|
20
|
+
def log2(numeric)
|
|
21
|
+
log(numeric, 2)
|
|
22
|
+
end unless method_defined? :log2
|
|
23
|
+
end
|
|
24
24
|
end
|
|
25
25
|
end
|
data/lib/backports/version.rb
CHANGED
|
@@ -14,24 +14,24 @@ module Kernel
|
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
require '
|
|
17
|
+
require 'set'
|
|
18
18
|
require File.expand_path(File.dirname(__FILE__) + "/test_helper")
|
|
19
19
|
|
|
20
20
|
class StdLibLoadingTest < Test::Unit::TestCase
|
|
21
21
|
def test_load_correctly_after_requiring_backports
|
|
22
|
-
path = File.expand_path("../../lib/backports/1.9.2/stdlib/
|
|
22
|
+
path = File.expand_path("../../lib/backports/1.9.2/stdlib/matrix.rb", __FILE__)
|
|
23
23
|
assert_equal false, $LOADED_FEATURES.include?(path)
|
|
24
|
-
assert_equal true, require('
|
|
25
|
-
assert_equal true, $bogus.include?("
|
|
24
|
+
assert_equal true, require('matrix')
|
|
25
|
+
assert_equal true, $bogus.include?("matrix")
|
|
26
26
|
assert_equal true, $LOADED_FEATURES.include?(path)
|
|
27
|
-
assert_equal false, require('
|
|
27
|
+
assert_equal false, require('matrix')
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
def test_load_correctly_before_requiring_backports_test
|
|
31
|
-
assert_equal true, $bogus.include?("
|
|
32
|
-
path = File.expand_path("../../lib/backports/1.9.2/stdlib/
|
|
31
|
+
assert_equal true, $bogus.include?("set")
|
|
32
|
+
path = File.expand_path("../../lib/backports/1.9.2/stdlib/set.rb", __FILE__)
|
|
33
33
|
assert_equal true, $LOADED_FEATURES.include?(path)
|
|
34
|
-
assert_equal false, require('
|
|
34
|
+
assert_equal false, require('set')
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
def test_not_interfere_for_libraries_without_backports_test
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
|
|
3
|
+
class TestBackport < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def class_signature(klass)
|
|
6
|
+
Hash[
|
|
7
|
+
klass.instance_methods.map{|m| [m, klass.instance_method(m)] } +
|
|
8
|
+
klass.methods.map{|m| [".#{m}", klass.method(m) ]}
|
|
9
|
+
]
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
CLASSES = [Array, Binding, Dir, Enumerable, Fixnum, Float, GC,
|
|
13
|
+
Hash, Integer, IO, Kernel, Math, MatchData, Method, Module, Numeric,
|
|
14
|
+
ObjectSpace, Proc, Process, Range, Regexp, String, Struct, Symbol] +
|
|
15
|
+
[ENV, ARGF].map{|obj| class << obj; self; end }
|
|
16
|
+
|
|
17
|
+
case RUBY_VERSION
|
|
18
|
+
when '1.8.6'
|
|
19
|
+
when '1.8.7'
|
|
20
|
+
CLASSES << Enumerable::Enumerator
|
|
21
|
+
else
|
|
22
|
+
CLASSES << Enumerator
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def digest
|
|
26
|
+
Hash[
|
|
27
|
+
CLASSES.map { |klass| [klass, class_signature(klass)] }
|
|
28
|
+
]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def digest_delta(before, after)
|
|
32
|
+
delta = {}
|
|
33
|
+
before.each do |klass, methods|
|
|
34
|
+
compare = after[klass]
|
|
35
|
+
d = methods.map do |name, unbound|
|
|
36
|
+
name unless unbound == compare[name]
|
|
37
|
+
end
|
|
38
|
+
d.compact!
|
|
39
|
+
delta[klass] = d unless d.empty?
|
|
40
|
+
end
|
|
41
|
+
delta unless delta.empty?
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_backports_wont_override_unnecessarily
|
|
45
|
+
before = digest
|
|
46
|
+
require "./lib/backports/#{RUBY_VERSION}"
|
|
47
|
+
after = digest
|
|
48
|
+
assert_nil digest_delta(before, after)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
data/test/test_lazy.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: backports
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.0.
|
|
4
|
+
version: 3.0.3
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -22,6 +22,7 @@ files:
|
|
|
22
22
|
- .document
|
|
23
23
|
- .gitignore
|
|
24
24
|
- .irbrc
|
|
25
|
+
- .travis.yml
|
|
25
26
|
- CHANGELOG.rdoc
|
|
26
27
|
- LICENSE.txt
|
|
27
28
|
- README.rdoc
|
|
@@ -129,6 +130,7 @@ files:
|
|
|
129
130
|
- lib/backports/version.rb
|
|
130
131
|
- test/README
|
|
131
132
|
- test/std_lib_loading_test.rb
|
|
133
|
+
- test/test__me_first.rb
|
|
132
134
|
- test/test_helper.rb
|
|
133
135
|
- test/test_lazy.rb
|
|
134
136
|
- test/test_socket_interaction.rb
|
|
@@ -159,7 +161,7 @@ summary: Backports of Ruby features for older Ruby.
|
|
|
159
161
|
test_files:
|
|
160
162
|
- test/README
|
|
161
163
|
- test/std_lib_loading_test.rb
|
|
164
|
+
- test/test__me_first.rb
|
|
162
165
|
- test/test_helper.rb
|
|
163
166
|
- test/test_lazy.rb
|
|
164
167
|
- test/test_socket_interaction.rb
|
|
165
|
-
has_rdoc:
|