backports 2.1.0 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +10 -0
- data/README.rdoc +29 -10
- data/VERSION.yml +2 -2
- data/backports.gemspec +11 -13
- data/lib/backports/{1.8.8 → 1.9.1}/array.rb +0 -0
- data/lib/backports/{1.8.8 → 1.9.1}/enumerable.rb +0 -0
- data/lib/backports/{1.8.8 → 1.9.1}/enumerator.rb +0 -0
- data/lib/backports/{1.8.8 → 1.9.1}/env.rb +0 -0
- data/lib/backports/{1.8.8 → 1.9.1}/hash.rb +0 -0
- data/lib/backports/1.9.1/io.rb +7 -0
- data/lib/backports/1.9.1/proc.rb +2 -0
- data/lib/backports/{1.8.8 → 1.9.1}/range.rb +0 -0
- data/lib/backports/{1.8.8 → 1.9.1}/regexp.rb +0 -0
- data/lib/backports/1.9.1/string.rb +27 -2
- metadata +13 -16
- data/lib/backports/1.8.8/io.rb +0 -11
- data/lib/backports/1.8.8/proc.rb +0 -3
- data/lib/backports/1.8.8/string.rb +0 -33
data/CHANGELOG.rdoc
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
= Packable --- History
|
2
2
|
|
3
|
+
== Version 2.2.0 - May 13th, 2011
|
4
|
+
|
5
|
+
* Ruby 1.8.8 was officially cancelled; code was moved to Ruby 1.9.1 and README updated.
|
6
|
+
|
7
|
+
* <tt>"".ord</tt> now raises an error.
|
8
|
+
|
9
|
+
== Version 2.1.0 - April 16th, 2011
|
10
|
+
|
11
|
+
* Proc#curry, #lambda (thanks Konstantine Haase)
|
12
|
+
|
3
13
|
== Version 2.0.0 - December 5th, 2010
|
4
14
|
|
5
15
|
Change of major version because of two small changes that are not quite compatible and because the minor version was getting quite high!
|
data/README.rdoc
CHANGED
@@ -10,7 +10,7 @@ The goal of 'backports' is to make it easier to write ruby code that runs across
|
|
10
10
|
|
11
11
|
require 'backports'
|
12
12
|
|
13
|
-
This will bring
|
13
|
+
This will bring in all the features of 1.8.7 (for Ruby 1.8.6) and many features of Ruby 1.9.1 (for Ruby 1.8.x) and Ruby 1.9.2 (for all earlier versions)!
|
14
14
|
|
15
15
|
+Note+: Although I am a Ruby committer, this gem is a personal project and is not endorsed by ruby-core.
|
16
16
|
|
@@ -25,7 +25,7 @@ Let's be a bit more precise about the breaking code business. It is of course en
|
|
25
25
|
|
26
26
|
A real incompatibility is, for example, <tt>Module::instance_methods</tt> which returns strings in 1.8 and symbols in 1.9. No change can be made without the risk of breaking existing code. Such incompatibilities are left unchanged.
|
27
27
|
|
28
|
-
All features of 1.8.7
|
28
|
+
All features of 1.8.7 are backported (well, almost all, see the exception list bellow), and many of 1.9 are also.
|
29
29
|
|
30
30
|
Some generic and self-contained features of active-support are also included. By simple I mean that String#camelcase is there, but #pluralize isn't.
|
31
31
|
|
@@ -40,7 +40,7 @@ To use:
|
|
40
40
|
require 'rubygems'
|
41
41
|
require 'backports' # or a subset, see next section
|
42
42
|
|
43
|
-
Compatible with Ruby 1.8.6, 1.8.7, 1.9.1,
|
43
|
+
Compatible with Ruby 1.8.6, 1.8.7, 1.9.1, 1.9.2, JRuby and Rubinius.
|
44
44
|
|
45
45
|
= Complete List of backports
|
46
46
|
|
@@ -57,24 +57,33 @@ To include _only_ these backports, <tt>require "backports/1.8.7"</tt>
|
|
57
57
|
|
58
58
|
== Ruby 1.8.8
|
59
59
|
|
60
|
-
|
61
|
-
|
62
|
-
Only exception:
|
63
|
-
* Enumerator#rewind (incompatible change, so won't be implemented)
|
64
|
-
|
65
|
-
To include _only_ these backports and those preceding, <tt>require "backports/1.8.8"</tt>.
|
60
|
+
Ruby 1.8.8 has been officially cancelled. As of version 2.2, <tt>require "backports/1.8.8"</tt> does nothing.
|
66
61
|
|
67
62
|
== Ruby 1.9.1
|
68
63
|
|
69
64
|
Additionally, the following Ruby 1.9 features have been backported:
|
65
|
+
* Array
|
66
|
+
* +try_convert+
|
67
|
+
|
68
|
+
* Enumerable
|
69
|
+
* +each_with_object+
|
70
|
+
|
71
|
+
* Enumerator
|
72
|
+
* +new+ (with block)
|
70
73
|
|
71
74
|
* File
|
72
75
|
* +binread+
|
73
76
|
* +to_path+
|
74
|
-
* All class methods accepting filenames will accept files or anything with a
|
77
|
+
* All class methods accepting filenames will accept files or anything with a <tt>#to_path</tt> method.
|
78
|
+
|
79
|
+
* Hash
|
80
|
+
* +try_convert+
|
81
|
+
* <tt>default_proc=</tt>
|
75
82
|
|
76
83
|
* IO
|
77
84
|
* +bin_read+
|
85
|
+
* +try_convert+
|
86
|
+
* +ungetbyte+
|
78
87
|
|
79
88
|
* Kernel
|
80
89
|
* +require_relative+
|
@@ -92,12 +101,22 @@ Additionally, the following Ruby 1.9 features have been backported:
|
|
92
101
|
* +yield+
|
93
102
|
* +lambda?+
|
94
103
|
* +curry+
|
104
|
+
* <tt>===</tt>
|
105
|
+
|
106
|
+
* Range
|
107
|
+
* <tt>cover?</tt>
|
108
|
+
|
109
|
+
* Regexp
|
110
|
+
* +try_convert+
|
95
111
|
|
96
112
|
* String
|
97
113
|
* <tt>ascii_only?</tt>
|
98
114
|
* +chr+
|
99
115
|
* +clear+
|
100
116
|
* +codepoints+, +each_codepoint+
|
117
|
+
* +get_byte+, +set_byte+
|
118
|
+
* +ord+
|
119
|
+
* +try_convert+
|
101
120
|
|
102
121
|
+Enumerator+ can be accessed directly (instead of <tt>Enumerable::Enumerator</tt>)
|
103
122
|
|
data/VERSION.yml
CHANGED
data/backports.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{backports}
|
8
|
-
s.version = "2.
|
8
|
+
s.version = "2.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Marc-Andr\303\251 Lafortune"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-05-13}
|
13
13
|
s.description = %q{ Essential backports that enable some of the really nice features of ruby 1.8.7, ruby 1.9 and rails from ruby 1.8.6 and earlier.
|
14
14
|
}
|
15
15
|
s.email = %q{github@marc-andre.ca}
|
@@ -54,25 +54,22 @@ Gem::Specification.new do |s|
|
|
54
54
|
"lib/backports/1.8.7/struct.rb",
|
55
55
|
"lib/backports/1.8.7/symbol.rb",
|
56
56
|
"lib/backports/1.8.8.rb",
|
57
|
-
"lib/backports/1.8.8/array.rb",
|
58
|
-
"lib/backports/1.8.8/enumerable.rb",
|
59
|
-
"lib/backports/1.8.8/enumerator.rb",
|
60
|
-
"lib/backports/1.8.8/env.rb",
|
61
|
-
"lib/backports/1.8.8/hash.rb",
|
62
|
-
"lib/backports/1.8.8/io.rb",
|
63
|
-
"lib/backports/1.8.8/proc.rb",
|
64
|
-
"lib/backports/1.8.8/range.rb",
|
65
|
-
"lib/backports/1.8.8/regexp.rb",
|
66
|
-
"lib/backports/1.8.8/string.rb",
|
67
57
|
"lib/backports/1.8.rb",
|
68
58
|
"lib/backports/1.9.1.rb",
|
59
|
+
"lib/backports/1.9.1/array.rb",
|
69
60
|
"lib/backports/1.9.1/dir.rb",
|
61
|
+
"lib/backports/1.9.1/enumerable.rb",
|
62
|
+
"lib/backports/1.9.1/enumerator.rb",
|
63
|
+
"lib/backports/1.9.1/env.rb",
|
70
64
|
"lib/backports/1.9.1/file.rb",
|
65
|
+
"lib/backports/1.9.1/hash.rb",
|
71
66
|
"lib/backports/1.9.1/integer.rb",
|
72
67
|
"lib/backports/1.9.1/io.rb",
|
73
68
|
"lib/backports/1.9.1/kernel.rb",
|
74
69
|
"lib/backports/1.9.1/math.rb",
|
75
70
|
"lib/backports/1.9.1/proc.rb",
|
71
|
+
"lib/backports/1.9.1/range.rb",
|
72
|
+
"lib/backports/1.9.1/regexp.rb",
|
76
73
|
"lib/backports/1.9.1/string.rb",
|
77
74
|
"lib/backports/1.9.1/symbol.rb",
|
78
75
|
"lib/backports/1.9.2.rb",
|
@@ -121,7 +118,7 @@ Gem::Specification.new do |s|
|
|
121
118
|
s.rdoc_options = ["--charset=UTF-8", "--title", "Backports library", "--main", "README.rdoc", "--line-numbers", "--inline-source"]
|
122
119
|
s.require_paths = ["lib"]
|
123
120
|
s.rubyforge_project = %q{backports}
|
124
|
-
s.rubygems_version = %q{1.
|
121
|
+
s.rubygems_version = %q{1.3.7}
|
125
122
|
s.summary = %q{Backports of Ruby 1.8.7+ for older ruby.}
|
126
123
|
s.test_files = [
|
127
124
|
"test/array_test.rb",
|
@@ -144,6 +141,7 @@ Gem::Specification.new do |s|
|
|
144
141
|
]
|
145
142
|
|
146
143
|
if s.respond_to? :specification_version then
|
144
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
147
145
|
s.specification_version = 3
|
148
146
|
|
149
147
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/backports/1.9.1/io.rb
CHANGED
@@ -6,5 +6,12 @@ class IO
|
|
6
6
|
f.read(*arg)
|
7
7
|
end
|
8
8
|
end unless method_defined? :binread
|
9
|
+
|
10
|
+
def try_convert(obj)
|
11
|
+
return nil unless obj.respond_to?(:to_io)
|
12
|
+
Backports.coerce_to(obj, IO, :to_io)
|
13
|
+
end unless method_defined? :try_convert
|
9
14
|
end
|
15
|
+
|
16
|
+
Backports.alias_method self, :ungetbyte, :ungetc
|
10
17
|
end
|
data/lib/backports/1.9.1/proc.rb
CHANGED
File without changes
|
File without changes
|
@@ -1,5 +1,13 @@
|
|
1
1
|
class String
|
2
2
|
|
3
|
+
class << self
|
4
|
+
# Standard in Ruby 1.8.8. See official documentation[http://ruby-doc.org/core-1.9/classes/String.html]
|
5
|
+
def try_convert(x)
|
6
|
+
return nil unless x.respond_do(:to_str)
|
7
|
+
x.to_str
|
8
|
+
end unless method_defined? :try_convert
|
9
|
+
end
|
10
|
+
|
3
11
|
# Standard in Ruby 1.9. See official documentation[http://ruby-doc.org/core-1.9/classes/String.html]
|
4
12
|
def ascii_only?
|
5
13
|
!(self =~ /[^\x00-\x7f]/)
|
@@ -17,9 +25,26 @@ class String
|
|
17
25
|
end unless method_defined? :clear
|
18
26
|
|
19
27
|
# Standard in Ruby 1.9. See official documentation[http://ruby-doc.org/core-1.9/classes/String.html]
|
20
|
-
|
28
|
+
def codepoints
|
29
|
+
return to_enum(:codepoints) unless block_given?
|
30
|
+
each_char do |s|
|
31
|
+
utf8 = s.each_byte.to_a
|
32
|
+
utf8[0] &= 0xff >> utf8.size # clear high bits (1 to 4, depending of number of bytes used)
|
33
|
+
yield utf8.inject{|result, b| (result << 6) + (b & 0x3f) }
|
34
|
+
end
|
35
|
+
end unless method_defined? :codepoints
|
21
36
|
|
22
37
|
# Standard in Ruby 1.9. See official documentation[http://ruby-doc.org/core-1.9/classes/String.html]
|
23
38
|
Backports.alias_method self, :each_codepoint, :codepoints
|
24
39
|
|
25
|
-
|
40
|
+
# Standard in Ruby 1.9. See official documentation[http://ruby-doc.org/core-1.9/classes/String.html]
|
41
|
+
def ord
|
42
|
+
codepoints.first or raise ArgumentError, "empty string"
|
43
|
+
end unless method_defined? :ord
|
44
|
+
|
45
|
+
# Standard in Ruby 1.8.8. See official documentation[http://ruby-doc.org/core-1.9/classes/String.html]
|
46
|
+
Backports.alias_method self, :getbyte, :[]
|
47
|
+
|
48
|
+
# Standard in Ruby 1.8.8. See official documentation[http://ruby-doc.org/core-1.9/classes/String.html]
|
49
|
+
Backports.alias_method self, :setbyte, :[]=
|
50
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: backports
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 7
|
5
|
+
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 2
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 0
|
10
|
-
version: 2.
|
10
|
+
version: 2.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- "Marc-Andr\xC3\xA9 Lafortune"
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-05-13 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -65,25 +65,22 @@ files:
|
|
65
65
|
- lib/backports/1.8.7/struct.rb
|
66
66
|
- lib/backports/1.8.7/symbol.rb
|
67
67
|
- lib/backports/1.8.8.rb
|
68
|
-
- lib/backports/1.8.8/array.rb
|
69
|
-
- lib/backports/1.8.8/enumerable.rb
|
70
|
-
- lib/backports/1.8.8/enumerator.rb
|
71
|
-
- lib/backports/1.8.8/env.rb
|
72
|
-
- lib/backports/1.8.8/hash.rb
|
73
|
-
- lib/backports/1.8.8/io.rb
|
74
|
-
- lib/backports/1.8.8/proc.rb
|
75
|
-
- lib/backports/1.8.8/range.rb
|
76
|
-
- lib/backports/1.8.8/regexp.rb
|
77
|
-
- lib/backports/1.8.8/string.rb
|
78
68
|
- lib/backports/1.8.rb
|
79
69
|
- lib/backports/1.9.1.rb
|
70
|
+
- lib/backports/1.9.1/array.rb
|
80
71
|
- lib/backports/1.9.1/dir.rb
|
72
|
+
- lib/backports/1.9.1/enumerable.rb
|
73
|
+
- lib/backports/1.9.1/enumerator.rb
|
74
|
+
- lib/backports/1.9.1/env.rb
|
81
75
|
- lib/backports/1.9.1/file.rb
|
76
|
+
- lib/backports/1.9.1/hash.rb
|
82
77
|
- lib/backports/1.9.1/integer.rb
|
83
78
|
- lib/backports/1.9.1/io.rb
|
84
79
|
- lib/backports/1.9.1/kernel.rb
|
85
80
|
- lib/backports/1.9.1/math.rb
|
86
81
|
- lib/backports/1.9.1/proc.rb
|
82
|
+
- lib/backports/1.9.1/range.rb
|
83
|
+
- lib/backports/1.9.1/regexp.rb
|
87
84
|
- lib/backports/1.9.1/string.rb
|
88
85
|
- lib/backports/1.9.1/symbol.rb
|
89
86
|
- lib/backports/1.9.2.rb
|
@@ -163,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
163
160
|
requirements: []
|
164
161
|
|
165
162
|
rubyforge_project: backports
|
166
|
-
rubygems_version: 1.
|
163
|
+
rubygems_version: 1.3.7
|
167
164
|
signing_key:
|
168
165
|
specification_version: 3
|
169
166
|
summary: Backports of Ruby 1.8.7+ for older ruby.
|
data/lib/backports/1.8.8/io.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
class IO
|
2
|
-
# Standard in Ruby 1.8.8. See official documentation[http://ruby-doc.org/core-1.9/classes/IO.html]
|
3
|
-
class << self
|
4
|
-
def try_convert(obj)
|
5
|
-
return nil unless obj.respond_to?(:to_io)
|
6
|
-
Backports.coerce_to(obj, IO, :to_io)
|
7
|
-
end unless method_defined? :try_convert
|
8
|
-
end
|
9
|
-
|
10
|
-
Backports.alias_method self, :ungetbyte, :ungetc
|
11
|
-
end
|
data/lib/backports/1.8.8/proc.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
class String
|
2
|
-
class << self
|
3
|
-
# Standard in Ruby 1.8.8. See official documentation[http://ruby-doc.org/core-1.9/classes/String.html]
|
4
|
-
def try_convert(x)
|
5
|
-
return nil unless x.respond_do(:to_str)
|
6
|
-
x.to_str
|
7
|
-
end unless method_defined? :try_convert
|
8
|
-
end
|
9
|
-
|
10
|
-
# Standard in Ruby 1.8.8. See official documentation[http://ruby-doc.org/core-1.9/classes/String.html]
|
11
|
-
Backports.alias_method self, :getbyte, :[]
|
12
|
-
|
13
|
-
# Standard in Ruby 1.8.8. See official documentation[http://ruby-doc.org/core-1.9/classes/String.html]
|
14
|
-
Backports.alias_method self, :setbyte, :[]=
|
15
|
-
|
16
|
-
# Let's define this here, we can use it for ord:
|
17
|
-
unless method_defined? :codepoints
|
18
|
-
def codepoints
|
19
|
-
return to_enum(:codepoints) unless block_given?
|
20
|
-
each_char do |s|
|
21
|
-
utf8 = s.each_byte.to_a
|
22
|
-
utf8[0] &= 0xff >> utf8.size # clear high bits (1 to 4, depending of number of bytes used)
|
23
|
-
yield utf8.inject{|result, b| (result << 6) + (b & 0x3f) }
|
24
|
-
end
|
25
|
-
end
|
26
|
-
private :codepoints # Will be made available in 1.9.1/string.rb, if included
|
27
|
-
end
|
28
|
-
|
29
|
-
# Standard in Ruby 1.8.8. See official documentation[http://ruby-doc.org/core-1.9/classes/String.html]
|
30
|
-
def ord
|
31
|
-
codepoints.first
|
32
|
-
end unless method_defined? :ord
|
33
|
-
end
|