object_as 1.0.0 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 4f3e347ce7c24a0e05b63e4511275e005f4a3bbc
4
- data.tar.gz: 9636725de1751fab9b7176cdb9abde1a584d6c3f
2
+ SHA256:
3
+ metadata.gz: 1a90b9c1b854890e572b1854d62334e90a8953d57756dbd3e85e18ee7b1b84d7
4
+ data.tar.gz: af7f44963c8d993301b4e0a30faa5f4519baf935d6654dca483d86a09b644086
5
5
  SHA512:
6
- metadata.gz: a0c37f75b48450ae6ca8d15a2fbe97530840f9779dda9946c6b9e69a59f847b79da7ad38873172e3ca2aa3f7c5f9e83be1414d98c1d7b51caf59d25c2af5cc5b
7
- data.tar.gz: ee78c6a3280f37c8dccb3d420ae30b656e21aac7a45bca8f21aaef5f72c3d3db58203df0af3acaca55faf59bf9367939ffa902c70b123765830ca25f3d3112c2
6
+ metadata.gz: 0c77e64d59defbdaa95808be14b1f4bbba6e45ca6733b7f269e694986fd41054e7dd85fc2d0ec59025ff95a11fc94568739bc2182b19f558872aca94c6b0f1bf
7
+ data.tar.gz: d2cd554a7b08d68e2423879ec93fd3a333703f0105fde311a674fb4948deb8800c4c72699f98f6bd3b9c3b9a2a49c2aab46ede52041e3492748ad480c4695b01
data/LICENSE.txt CHANGED
File without changes
data/README.md CHANGED
@@ -2,6 +2,9 @@
2
2
 
3
3
  A simple refinement to get Object#as
4
4
 
5
+ ## Deprecation warning
6
+
7
+ As of Ruby version 2.5, the method `Object::yield_self` is included in the standard Ruby library and should be preferred to `Object::as`.
5
8
 
6
9
  ## Installation
7
10
 
@@ -24,23 +27,64 @@ Or install it yourself as:
24
27
  Object#as it much like Object#tap except that it returns the value of the block
25
28
  instead of the value being tapped.
26
29
 
27
- > "Ruby".as {|n| n.reverse }
28
- => "ybuR"
30
+ > keys = [1, 2, 3]
31
+ > values = %w(a b c)
32
+ > keys.zip(values).as {|kv| Hash[kv] }
33
+ => {1=>"a", 2=>"b", 3=>"c"}
29
34
 
30
35
  Object#as is useful when chaining methods. This is a complete Ruby source file:
31
36
 
32
37
  require 'object_as'
33
38
  using ObjectAs
34
- [1, 2, 3].map {|x| x * x }.as {|array| array.reverse }.each {|x| puts x }
35
- # prints 9, 4 and 1
39
+
40
+ def square(array)
41
+ array.map {|x| x * x }
42
+ end
43
+
44
+ [1, 2, 3].as {|array| square array }.each {|x| puts x }
45
+ # prints 1, 4, 9
36
46
 
37
47
  For Ruby versions older than 2.1, there is a way to use Object#as without
38
48
  refinements. This method uses monkeypatching.
39
49
 
40
50
  require 'object_as_no_refinements'
41
- [1, 2, 3].map {|x| x * x }.as {|array| array.reverse }.each {|x| puts x }
42
- # prints 9, 4 and 1
43
51
 
52
+ def square(array)
53
+ array.map {|x| x * x }
54
+ end
55
+
56
+ [1, 2, 3].as {|array| square array }.each {|x| puts x }
57
+ # prints 1, 4, 9
58
+
59
+ ## Example
60
+
61
+ In this example I am using OpenCv to process an image in a method chain, but at
62
+ one point I want to subtract the average value of the image from itself.
63
+
64
+
65
+ require 'object_as'
66
+ require 'opencv'
67
+
68
+ using ObjectAs
69
+
70
+ region_of_interest =
71
+ CvMat.load("image.png")
72
+ sub_rect(x, y, 20, 20).
73
+ normalize(0.0, 1.0, CV_NORM_MINMAX, CV_32F).
74
+ as {|i| i.sub(i.avg) }
75
+
76
+ The alternative, without Object#as would look something like this:
77
+
78
+ Require 'opencv'
79
+
80
+ tmp =
81
+ CvMat.load(filename)
82
+ sub_rect(x, y, 20, 20).
83
+ normalize(0.0, 1.0, CV_NORM_MINMAX, CV_32F)
84
+
85
+ region_of_interest = tmp.sub(tmp.avg)
86
+
87
+ The method chain is broken, and we have to introduce a temporary variable.
44
88
 
45
89
  ## Contributing
46
90
 
@@ -1,3 +1,3 @@
1
1
  module ObjectAs
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
data/lib/object_as.rb CHANGED
File without changes
File without changes
metadata CHANGED
@@ -1,43 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: object_as
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tallak Tveide
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-20 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ~>
18
- - !ruby/object:Gem::Version
19
- version: '1.7'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ~>
25
- - !ruby/object:Gem::Version
26
- version: '1.7'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ~>
32
- - !ruby/object:Gem::Version
33
- version: '10.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ~>
39
- - !ruby/object:Gem::Version
40
- version: '10.0'
11
+ date: 2026-10-20 00:00:00.000000000 Z
12
+ dependencies: []
41
13
  description: Object#as is useful for method chaining
42
14
  email:
43
15
  - tallak@tveide.net
@@ -45,41 +17,33 @@ executables: []
45
17
  extensions: []
46
18
  extra_rdoc_files: []
47
19
  files:
48
- - .gitignore
49
- - Gemfile
50
20
  - LICENSE.txt
51
21
  - README.md
52
- - Rakefile
53
22
  - lib/object_as.rb
54
23
  - lib/object_as/version.rb
55
24
  - lib/object_as_no_refinements.rb
56
- - object_as.gemspec
57
- - test/test_object_as.rb
58
- - test/test_object_as_no_refinement.rb
59
- homepage: ''
25
+ homepage: https://github.com/tallakt/object_as
60
26
  licenses:
61
27
  - MIT
62
- metadata: {}
63
- post_install_message:
28
+ metadata:
29
+ rubygems_mfa_required: 'true'
30
+ post_install_message:
64
31
  rdoc_options: []
65
32
  require_paths:
66
33
  - lib
67
34
  required_ruby_version: !ruby/object:Gem::Requirement
68
35
  requirements:
69
- - - '>='
36
+ - - ">="
70
37
  - !ruby/object:Gem::Version
71
- version: '0'
38
+ version: '3.0'
72
39
  required_rubygems_version: !ruby/object:Gem::Requirement
73
40
  requirements:
74
- - - '>='
41
+ - - ">="
75
42
  - !ruby/object:Gem::Version
76
43
  version: '0'
77
44
  requirements: []
78
- rubyforge_project:
79
- rubygems_version: 2.4.1
80
- signing_key:
45
+ rubygems_version: 3.4.20
46
+ signing_key:
81
47
  specification_version: 4
82
48
  summary: Implementation of the Object#as method
83
- test_files:
84
- - test/test_object_as.rb
85
- - test/test_object_as_no_refinement.rb
49
+ test_files: []
data/.gitignore DELETED
@@ -1,15 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- *.bundle
11
- *.so
12
- *.o
13
- *.a
14
- mkmf.log
15
- *.gem
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in object_as.gemspec
4
- gemspec
data/Rakefile DELETED
@@ -1,11 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require 'rake'
3
- require 'rake/testtask'
4
-
5
- Rake::TestTask.new do |t|
6
- t.test_files = FileList['test/test*.rb']
7
- end
8
-
9
- task(default: :test)
10
-
11
-
data/object_as.gemspec DELETED
@@ -1,23 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'object_as/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "object_as"
8
- spec.version = ObjectAs::VERSION
9
- spec.authors = ["Tallak Tveide"]
10
- spec.email = ["tallak@tveide.net"]
11
- spec.summary = %q{Implementation of the Object#as method}
12
- spec.description = %q{Object#as is useful for method chaining}
13
- spec.homepage = ""
14
- spec.license = "MIT"
15
-
16
- spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
20
-
21
- spec.add_development_dependency "bundler", "~> 1.7"
22
- spec.add_development_dependency "rake", "~> 10.0"
23
- end
@@ -1,10 +0,0 @@
1
- require 'minitest/autorun'
2
- require_relative '../lib/object_as'
3
-
4
- using ObjectAs
5
-
6
- class TestObjectAs < MiniTest::Test
7
- def test_that_kitty_can_eat
8
- assert_equal 1.as {|n| n + n }, 2
9
- end
10
- end
@@ -1,8 +0,0 @@
1
- require 'minitest/autorun'
2
- require_relative '../lib/object_as_no_refinements'
3
-
4
- class TestObjectAs < MiniTest::Test
5
- def test_that_kitty_can_eat
6
- assert_equal 1.as {|n| n + n }, 2
7
- end
8
- end