procto 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f5773a83ff9ba5df3c3c9c8bcc34300ed2421e79
4
+ data.tar.gz: ff5be4828220d15e4018f165079bbb7e3740b567
5
+ SHA512:
6
+ metadata.gz: d7267fcabfd12b7631fd8b2fc9337cd2aced70ce958b62f6c3da87510d6cc5f547328f3a4bfecf257c199fddd6429583b1c599035b22ad52d9405cce76c68c88
7
+ data.tar.gz: cac224bef82278288a507f358b89fa3a2718428a50035d60923e563184c6ffcdb6420ed7dc806a4b923822693472c1b8214e59e9c4178fad4ef00b320b0754dc
@@ -3,8 +3,7 @@ before_install: gem install bundler
3
3
  bundler_args: --without yard guard benchmarks
4
4
  script: "bundle exec rake ci"
5
5
  rvm:
6
- - 1.9.3
7
- - 2.0.0
6
+ - 2.3.0
8
7
  - ruby-head
9
8
  - rbx-19mode
10
9
  matrix:
@@ -15,3 +14,5 @@ matrix:
15
14
  env: JRUBY_OPTS="$JRUBY_OPTS --debug"
16
15
  allow_failures:
17
16
  - rvm: rbx-19mode
17
+ - rvm: jruby-19mode
18
+ - rvm: jruby-head
data/Gemfile CHANGED
@@ -5,8 +5,9 @@ source 'https://rubygems.org'
5
5
  gemspec
6
6
 
7
7
  group :development do
8
- gem 'devtools', git: 'https://github.com/rom-rb/devtools.git'
8
+ gem 'devtools', git: 'https://github.com/mbj/devtools.git'
9
9
  end
10
10
 
11
- # added by devtools
12
- eval_gemfile 'Gemfile.devtools'
11
+ group :test do
12
+ gem 'coveralls', '~> 0.8.9'
13
+ end
@@ -1,3 +1,3 @@
1
1
  ---
2
- threshold: 0
3
- total_score: 0
2
+ threshold: 2
3
+ total_score: 2
@@ -1,2 +1,2 @@
1
1
  ---
2
- threshold: 3.7
2
+ threshold: 5.5
@@ -25,7 +25,7 @@ FeatureEnvy:
25
25
  enabled: true
26
26
  exclude: []
27
27
  IrresponsibleModule:
28
- enabled: true
28
+ enabled: false
29
29
  exclude: []
30
30
  LongParameterList:
31
31
  enabled: true
@@ -1,9 +1,9 @@
1
1
  AllCops:
2
- Includes:
2
+ Include:
3
3
  - '**/*.rake'
4
4
  - 'Gemfile'
5
5
  - 'Gemfile.devtools'
6
- Excludes:
6
+ Exclude:
7
7
  - '**/vendor/**'
8
8
  - '**/benchmarks/**'
9
9
 
@@ -57,10 +57,6 @@ ConstantName:
57
57
  TrivialAccessors:
58
58
  Enabled: false
59
59
 
60
- # Do not prefer do/end over {} for multiline blocks
61
- Blocks:
62
- Enabled: false
63
-
64
60
  # Do not favor aligned parameters in method calls
65
61
  AlignParameters:
66
62
  Enabled: false
@@ -76,3 +72,7 @@ Lambda:
76
72
 
77
73
  AndOr:
78
74
  Enabled: false # we agree to use and/or for control flow
75
+
76
+ # Allow code to be aligned more nicely
77
+ SpaceBeforeFirstArg:
78
+ Enabled: false
@@ -76,5 +76,37 @@ class Procto < Module
76
76
  host.instance_exec(@block) do |block|
77
77
  define_singleton_method(:call, &block)
78
78
  end
79
+
80
+ host.extend(ClassMethods)
81
+ end
82
+
83
+ # Procto module for adding .to_proc to host class
84
+ module ClassMethods
85
+ # Return the `call` singleton method as a lambda
86
+ #
87
+ # @example using a class as a proc
88
+ #
89
+ # class Shouter
90
+ # include Procto.call
91
+ #
92
+ # def initialize(text)
93
+ # @text = text
94
+ # end
95
+ #
96
+ # def call
97
+ # "#{@text.upcase}!"
98
+ # end
99
+ # end
100
+ #
101
+ # Shouter.to_proc.call('hello') # => "HELLO!"
102
+ # %w[foo bar].map(&Shouter) # => ["FOO!", "BAR!"]
103
+ #
104
+ # @return [Proc]
105
+ #
106
+ # @api public
107
+ def to_proc
108
+ public_method(:call).to_proc
109
+ end
79
110
  end
111
+ private_constant(:ClassMethods)
80
112
  end # Procto
@@ -2,5 +2,5 @@
2
2
 
3
3
  class Procto < Module
4
4
  # Gem version
5
- VERSION = '0.0.2'.freeze
5
+ VERSION = '0.0.3'.freeze
6
6
  end
@@ -17,5 +17,5 @@ Gem::Specification.new do |gem|
17
17
  gem.extra_rdoc_files = %w[LICENSE README.md CONTRIBUTING.md]
18
18
  gem.license = 'MIT'
19
19
 
20
- gem.add_development_dependency 'bundler', '~> 1.3.5'
20
+ gem.add_development_dependency 'bundler', '~> 1'
21
21
  end
@@ -0,0 +1,10 @@
1
+ # encoding: utf-8
2
+
3
+ shared_context 'procto' do
4
+ let(:text) { 'world' }
5
+ let(:expected) { "Hello #{text}" }
6
+
7
+ it 'returns the correct value' do
8
+ expect(subject).to eql(expected)
9
+ end
10
+ end
@@ -2,18 +2,9 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- shared_context 'procto' do
5
+ describe Procto, '.call' do
6
6
  subject { klass.call(text) }
7
7
 
8
- let(:text) { 'world' }
9
- let(:expected) { "Hello #{text}" }
10
-
11
- it 'returns the correct value' do
12
- expect(subject).to eql(expected)
13
- end
14
- end
15
-
16
- describe Procto, '.call' do
17
8
  context 'with no name' do
18
9
  include_context 'procto'
19
10
 
@@ -0,0 +1,29 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Procto, '.to_proc' do
6
+ include_context 'procto'
7
+
8
+ subject { proc.call(text) }
9
+
10
+ let(:proc) { klass.to_proc }
11
+
12
+ let(:klass) do
13
+ Class.new do
14
+ include Procto.call
15
+
16
+ def initialize(text)
17
+ @text = text
18
+ end
19
+
20
+ def call
21
+ "Hello #{@text}"
22
+ end
23
+ end
24
+ end
25
+
26
+ it 'exposes a lambda proc' do
27
+ expect(proc).to be_a_lambda
28
+ end
29
+ end
metadata CHANGED
@@ -1,32 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: procto
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
5
- prerelease:
4
+ version: 0.0.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Martin Gamsjaeger (snusnu)
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-12-20 00:00:00.000000000 Z
11
+ date: 2016-02-29 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: 1.3.5
19
+ version: '1'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: 1.3.5
26
+ version: '1'
30
27
  description: Turns your object into a method object
31
28
  email:
32
29
  - gamsnjaga@gmail.com
@@ -37,14 +34,12 @@ extra_rdoc_files:
37
34
  - README.md
38
35
  - CONTRIBUTING.md
39
36
  files:
40
- - .gitignore
41
- - .rspec
42
- - .ruby-gemset
43
- - .ruby-version
44
- - .travis.yml
37
+ - ".gitignore"
38
+ - ".rspec"
39
+ - ".ruby-gemset"
40
+ - ".travis.yml"
45
41
  - CONTRIBUTING.md
46
42
  - Gemfile
47
- - Gemfile.devtools
48
43
  - LICENSE
49
44
  - README.md
50
45
  - Rakefile
@@ -58,32 +53,33 @@ files:
58
53
  - lib/procto.rb
59
54
  - lib/procto/version.rb
60
55
  - procto.gemspec
61
- - spec/procto_spec.rb
56
+ - spec/shared/procto_behavior.rb
62
57
  - spec/spec_helper.rb
58
+ - spec/unit/procto/call_spec.rb
59
+ - spec/unit/procto/to_proc_spec.rb
63
60
  homepage: https://github.com/snusnu/procto
64
61
  licenses:
65
62
  - MIT
63
+ metadata: {}
66
64
  post_install_message:
67
65
  rdoc_options: []
68
66
  require_paths:
69
67
  - lib
70
68
  required_ruby_version: !ruby/object:Gem::Requirement
71
- none: false
72
69
  requirements:
73
- - - ! '>='
70
+ - - ">="
74
71
  - !ruby/object:Gem::Version
75
72
  version: '0'
76
73
  required_rubygems_version: !ruby/object:Gem::Requirement
77
- none: false
78
74
  requirements:
79
- - - ! '>='
75
+ - - ">="
80
76
  - !ruby/object:Gem::Version
81
77
  version: '0'
82
78
  requirements: []
83
79
  rubyforge_project:
84
- rubygems_version: 1.8.23
80
+ rubygems_version: 2.2.2
85
81
  signing_key:
86
- specification_version: 3
82
+ specification_version: 4
87
83
  summary: Defines Foo.call(*args) which invokes Foo.new(*args).bar
88
84
  test_files: []
89
85
  has_rdoc:
@@ -1 +0,0 @@
1
- 1.9.3
@@ -1,67 +0,0 @@
1
- # encoding: utf-8
2
-
3
- group :development do
4
- gem 'rake', '~> 10.1.0'
5
- gem 'rspec', '~> 2.14.1'
6
- gem 'yard', '~> 0.8.7'
7
-
8
- platform :rbx do
9
- gem 'rubysl-singleton', '~> 2.0.0'
10
- end
11
- end
12
-
13
- group :yard do
14
- gem 'kramdown', '~> 1.3.0'
15
- end
16
-
17
- group :guard do
18
- gem 'guard', '~> 2.2.4'
19
- gem 'guard-bundler', '~> 2.0.0'
20
- gem 'guard-rspec', '~> 4.2.0'
21
- gem 'guard-rubocop', '~> 1.0.0'
22
-
23
- # file system change event handling
24
- gem 'listen', '~> 2.4.0'
25
- gem 'rb-fchange', '~> 0.0.6', require: false
26
- gem 'rb-fsevent', '~> 0.9.3', require: false
27
- gem 'rb-inotify', '~> 0.9.0', require: false
28
-
29
- # notification handling
30
- gem 'libnotify', '~> 0.8.0', require: false
31
- gem 'rb-notifu', '~> 0.0.4', require: false
32
- gem 'terminal-notifier-guard', '~> 1.5.3', require: false
33
- end
34
-
35
- group :metrics do
36
- gem 'coveralls', '~> 0.7.0'
37
- gem 'flay', '~> 2.4.0'
38
- gem 'flog', '~> 4.2.0'
39
- gem 'reek', '~> 1.3.2'
40
- gem 'rubocop', '~> 0.15.0'
41
- gem 'simplecov', '~> 0.8.2'
42
- gem 'yardstick', '~> 0.9.7', git: 'https://github.com/dkubb/yardstick.git'
43
-
44
- platforms :ruby_19, :ruby_20 do
45
- gem 'mutant', '~> 0.3.0', git: 'https://github.com/mbj/mutant.git'
46
- gem 'unparser', '~> 0.1.5', git: 'https://github.com/mbj/unparser.git'
47
- gem 'yard-spellcheck', '~> 0.1.5'
48
- end
49
-
50
- platform :rbx do
51
- gem 'json', '~> 1.8.1'
52
- gem 'racc', '~> 1.4.10'
53
- gem 'rubysl-logger', '~> 2.0.0'
54
- gem 'rubysl-open-uri', '~> 2.0.0'
55
- gem 'rubysl-prettyprint', '~> 2.0.2'
56
- end
57
- end
58
-
59
- group :benchmarks do
60
- gem 'rbench', '~> 0.2.3'
61
- end
62
-
63
- platform :jruby do
64
- group :jruby do
65
- gem 'jruby-openssl', '~> 0.8.5'
66
- end
67
- end