backport_yield_self 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e7fedf2e485f54c376443518889f331a635e0734
4
+ data.tar.gz: 441a611dad33f158cefcb6448b4cde0b421ad08f
5
+ SHA512:
6
+ metadata.gz: a3bee9d96c32156e72c29f28d9fee0a8eedf98829b5385f52f9e672518b86a82db043f36fa2f776352a8ded0544d0dffb026337391134b87785c2f4dd3756119
7
+ data.tar.gz: 643039b55ffa03ed0d71c2160c63eff43b73132a1f594d2295b4b15a333266f08ed3c3805ebf8381ae2ec7142cf30af37468363bfa2dff5c9f6dbf9d682c303d
data/Manifest.txt ADDED
@@ -0,0 +1,3 @@
1
+ ext/backport_yield_self/extconf.rb
2
+ ext/backport_yield_self/backport_yield_self.c
3
+ lib/backport_yield_self.rb
data/README.md ADDED
@@ -0,0 +1,64 @@
1
+ # backport_yield_self [![Build Status](https://travis-ci.org/koic/backport_yield_self.svg)](https://travis-ci.org/koic/backport_yield_self)
2
+
3
+ backport_yield_self is the backport of `Kernel#yield_self` in Ruby 2.5 to older Ruby versions.
4
+
5
+ The best way is to use Ruby 2.5 or later. Because you can use original `yield_self` method and so on.
6
+
7
+ ## Installation
8
+
9
+ Add these lines to your application's Gemfile:
10
+
11
+ ```
12
+ gem 'backport_yield_self'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ ```
18
+ $ bundle install
19
+ ```
20
+
21
+ Or install it yourself as:
22
+
23
+ ```
24
+ $ gem install backport_yield_self
25
+ ```
26
+
27
+ And require it as:
28
+
29
+ ```
30
+ require 'backport_yield_self'
31
+ ```
32
+
33
+ ## Synopsis
34
+
35
+ ```ruby
36
+ "my string".yield_self {|s| s.upcase } #=> "MY STRING"
37
+ 3.next.yield_self {|x| x**x }.to_s #=> "256"
38
+ ```
39
+
40
+ ## Supported Versions
41
+
42
+ * Ruby 2.2
43
+ * Ruby 2.3
44
+ * Ruby 2.4
45
+
46
+ ## Contributing
47
+
48
+ 1. Fork it
49
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
50
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
51
+ 4. Push to the branch (`git push origin my-new-feature`)
52
+ 5. Create new Pull Request
53
+
54
+ ## License
55
+
56
+ backport_yield_self is released under the [MIT License](http://www.opensource.org/licenses/MIT).
57
+
58
+ ### Get the original codes
59
+
60
+ * Kernel#yield_self [https://github.com/ruby/ruby/commit/cec0668](https://github.com/ruby/ruby/commit/cec0668209483a3f233574211c4b8fbd3d1d64b7)
61
+
62
+ ## Special Thanks
63
+
64
+ * Ruby Development Team
data/Rakefile ADDED
@@ -0,0 +1,19 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+ require 'hoe'
4
+ gem 'rake-compiler'
5
+ require 'rake/extensiontask'
6
+
7
+ name = 'backport_yield_self'
8
+
9
+ Hoe.plugin :gemspec
10
+
11
+ HOE = Hoe.spec name do
12
+ VERSION = BackportYieldSelf::VERSION
13
+ developer('Koichi ITO', 'koic.ito@gmail.com')
14
+ license 'MIT'
15
+ end
16
+
17
+ RET = Rake::ExtensionTask.new(name, HOE.spec) do |ext|
18
+ ext.lib_dir = File.join('lib', name)
19
+ end
@@ -0,0 +1,58 @@
1
+ #include <ruby.h>
2
+ #include <ruby/intern.h>
3
+
4
+ static VALUE
5
+ rb_obj_size(VALUE self, VALUE args, VALUE obj)
6
+ {
7
+ return LONG2FIX(1);
8
+ }
9
+
10
+ /*!
11
+ * Make the object invisible from Ruby code.
12
+ *
13
+ * It is useful to let Ruby's GC manage your internal data structure --
14
+ * The object keeps being managed by GC, but \c ObjectSpace.each_object
15
+ * never yields the object.
16
+ *
17
+ * Note that the object also lose a way to call a method on it.
18
+ *
19
+ * \param[in] obj a Ruby object
20
+ * \sa rb_obj_reveal
21
+ */
22
+ VALUE
23
+ rb_obj_hide(VALUE obj)
24
+ {
25
+ if (!SPECIAL_CONST_P(obj)) {
26
+ RBASIC_CLEAR_CLASS(obj);
27
+ }
28
+ return obj;
29
+ }
30
+
31
+ /*
32
+ * call-seq:
33
+ * obj.yield_self {|x| block } -> an_object
34
+ *
35
+ * Yields self to the block and returns the result of the block.
36
+ *
37
+ * "my string".yield_self {|s| s.upcase } #=> "MY STRING"
38
+ * 3.next.yield_self {|x| x**x }.to_s #=> "256"
39
+ *
40
+ */
41
+
42
+ static VALUE
43
+ rb_obj_yield_self(VALUE obj)
44
+ {
45
+ RETURN_SIZED_ENUMERATOR(obj, 0, 0, rb_obj_size);
46
+ return rb_yield_values2(1, &obj);
47
+ }
48
+
49
+ void
50
+ Init_backport_yield_self(void)
51
+ {
52
+ #undef rb_intern
53
+ #define rb_intern(str) rb_intern_const(str)
54
+
55
+ rb_mKernel = rb_define_module("Kernel");
56
+
57
+ rb_define_method(rb_mKernel, "yield_self", rb_obj_yield_self, 0);
58
+ }
@@ -0,0 +1,42 @@
1
+ ENV['RC_ARCHS'] = '' if RUBY_PLATFORM =~ /darwin/
2
+
3
+ # :stopdoc:
4
+
5
+ require 'mkmf'
6
+
7
+ LIBDIR = RbConfig::CONFIG['libdir']
8
+ INCLUDEDIR = RbConfig::CONFIG['includedir']
9
+
10
+ $CFLAGS << " -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline"
11
+
12
+ HEADER_DIRS = [
13
+ # First search /opt/local for macports
14
+ '/opt/local/include',
15
+
16
+ # Then search /usr/local for people that installed from source
17
+ '/usr/local/include',
18
+
19
+ # Check the ruby install locations
20
+ INCLUDEDIR,
21
+
22
+ # Finally fall back to /usr
23
+ '/usr/include',
24
+ ]
25
+
26
+ LIB_DIRS = [
27
+ # First search /opt/local for macports
28
+ '/opt/local/lib',
29
+
30
+ # Then search /usr/local for people that installed from source
31
+ '/usr/local/lib',
32
+
33
+ # Check the ruby install locations
34
+ LIBDIR,
35
+
36
+ # Finally fall back to /usr
37
+ '/usr/lib',
38
+ ]
39
+
40
+ create_makefile('backport_yield_self/backport_yield_self')
41
+
42
+ # :startdoc:
@@ -0,0 +1 @@
1
+ require 'backport_yield_self/backport_yield_self'
metadata ADDED
@@ -0,0 +1,99 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: backport_yield_self
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Koichi ITO
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-01-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: hoe
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake-compiler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 3.0.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 3.0.0
55
+ description:
56
+ email: koic.ito@gmail.com
57
+ executables: []
58
+ extensions:
59
+ - ext/backport_yield_self/extconf.rb
60
+ extra_rdoc_files: []
61
+ files:
62
+ - Manifest.txt
63
+ - README.md
64
+ - Rakefile
65
+ - ext/backport_yield_self/backport_yield_self.c
66
+ - ext/backport_yield_self/extconf.rb
67
+ - lib/backport_yield_self.rb
68
+ homepage: https://github.com/koic/backport_yield_self
69
+ licenses:
70
+ - MIT
71
+ metadata: {}
72
+ post_install_message: |
73
+ backport_yield_self is the backport of Kernel#yield_self in Ruby 2.5 to older Ruby versions.
74
+ The best way is to use Ruby 2.5 or later.
75
+ Thanks.
76
+ rdoc_options: []
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 2.2.0
84
+ - - "<"
85
+ - !ruby/object:Gem::Version
86
+ version: 2.5.0
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ requirements: []
93
+ rubyforge_project:
94
+ rubygems_version: 2.6.14
95
+ signing_key:
96
+ specification_version: 4
97
+ summary: backport_yield_self is the backport of Kernel#yield_self in Ruby 2.5 to older
98
+ Ruby versions.
99
+ test_files: []