if 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +7 -0
  2. data/lib/if.rb +23 -4
  3. data/spec/if_spec.rb +99 -21
  4. data/spec/spec_helper.rb +17 -0
  5. metadata +19 -16
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 48f4dc2f902936d9e33d8dbd8b5ac638de6cb812
4
+ data.tar.gz: 537cdc652b31d2b68cbe2380d2416e4d4e36bdda
5
+ SHA512:
6
+ metadata.gz: f9bfba1de91f2f086b3d6026f5751df343c317d74e3a15c6e288ff169945a6f64d1e373335cf6b7fae5fe5f086c538d5fa82bc89290fba483f005bcb03e47d18
7
+ data.tar.gz: 6f9b97f3d2619ebc8a3eaa33e3c06f94574ae7c1a0a062f541f9a48ce03908c3e0c4bbe8794ad8d3d956898cd251f9b85efcefde6afa365e2949b0d8c566c09d
data/lib/if.rb CHANGED
@@ -1,15 +1,35 @@
1
1
  class BasicObject
2
- def if(if_true, options = {})
2
+ def if(if_true, _options = {})
3
3
  if_true.call
4
4
  end
5
+
6
+ def if_true
7
+ yield
8
+
9
+ self
10
+ end
11
+
12
+ def if_false
13
+ self
14
+ end
5
15
  end
6
16
 
7
17
  module Falsey
8
- def if(if_true, options = {})
9
- if_false = options.fetch(:else, ->{})
18
+ def if(_if_true, options = {})
19
+ if_false = options.fetch(:else, -> {})
10
20
 
11
21
  if_false.call
12
22
  end
23
+
24
+ def if_true
25
+ self
26
+ end
27
+
28
+ def if_false
29
+ yield
30
+
31
+ self
32
+ end
13
33
  end
14
34
 
15
35
  class NilClass
@@ -19,4 +39,3 @@ end
19
39
  class FalseClass
20
40
  include Falsey
21
41
  end
22
-
data/spec/if_spec.rb CHANGED
@@ -1,38 +1,116 @@
1
- require "minitest/autorun"
2
- require_relative "../lib/if"
1
+ require 'if'
3
2
 
4
- describe BasicObject do
3
+ RSpec.describe BasicObject do
5
4
  let(:object) { BasicObject.new }
6
5
 
7
- it "always evaluates the first block to if" do
8
- object.if(->{ "I'm true!" }).must_equal "I'm true!"
6
+ describe '#if' do
7
+ it 'always evaluates the first block to if' do
8
+ expect(object.if(-> { "I'm true!" })).to eq("I'm true!")
9
+ end
10
+
11
+ it 'ignores any else blocks' do
12
+ expect(object.if(-> { "I'm true!" },
13
+ else: -> { "I'm false!" })).to eq("I'm true!")
14
+ end
9
15
  end
10
16
 
11
- it "ignores any else blocks" do
12
- object.if(->{ "I'm true!" },
13
- else: ->{ "Not false!" }).must_equal "I'm true!"
17
+ describe '#if_true' do
18
+ it 'evaluates the given block' do
19
+ expect { object.if_true { puts "I'm true!" } }
20
+ .to output("I'm true!\n").to_stdout
21
+ end
22
+
23
+ it 'returns the object for chaining' do
24
+ expect(object.if_true { "I'm true!" }).to eq(object)
25
+ end
14
26
  end
15
- end
16
27
 
17
- describe NilClass do
18
- it "always returns the else block" do
19
- nil.if(-> { "I'm true!" },
20
- else: ->{ "I'm false!" }).must_equal "I'm false!"
28
+ describe '#if_false' do
29
+ it 'returns self' do
30
+ expect(object.if_false { "I'm false!" }).to eq(object)
31
+ end
21
32
  end
22
33
 
23
- it "does nothing by default" do
24
- nil.if(-> { "I'm true!" }).must_be_nil
34
+ describe 'chaining #if_true and #if_false' do
35
+ it 'evaluates based on the original object' do
36
+ expect { object.if_true { puts "I'm true!"; false }
37
+ .if_false { puts "I'm false!" } }
38
+ .to output("I'm true!\n").to_stdout
39
+ end
25
40
  end
26
41
  end
27
42
 
28
- describe FalseClass do
29
- it "always returns the else block" do
30
- false.if(-> { "I'm true!" },
31
- else: ->{ "I'm false!" }).must_equal "I'm false!"
43
+ RSpec.describe NilClass do
44
+ describe '#if' do
45
+ it 'always returns the else block' do
46
+ expect(nil.if(-> { "I'm true!" },
47
+ else: -> { "I'm false!" })).to eq("I'm false!")
48
+ end
49
+
50
+ it 'does nothing by default' do
51
+ expect(nil.if(-> { "I'm true!" })).to be_nil
52
+ end
53
+ end
54
+
55
+ describe '#if_true' do
56
+ it 'returns self' do
57
+ expect(nil.if_true { "I'm true!" }).to be_nil
58
+ end
32
59
  end
33
60
 
34
- it "does nothing by default" do
35
- false.if(-> { "I'm true!" }).must_be_nil
61
+ describe '#if_false' do
62
+ it 'evaluates the given block' do
63
+ expect { nil.if_false { puts "I'm false!" } }
64
+ .to output("I'm false!\n").to_stdout
65
+ end
66
+
67
+ it 'returns nil' do
68
+ expect(nil.if_false { "I'm false!" }).to be_nil
69
+ end
70
+ end
71
+
72
+ describe 'chaining #if_false and #if_true' do
73
+ it 'evaluates based on the original object' do
74
+ expect { nil.if_false { puts "I'm false!"; true }
75
+ .if_true { puts "I'm true!" } }
76
+ .to output("I'm false!\n").to_stdout
77
+ end
36
78
  end
37
79
  end
38
80
 
81
+ RSpec.describe FalseClass do
82
+ describe '#if' do
83
+ it 'always returns the else block' do
84
+ expect(false.if(-> { "I'm true!" },
85
+ else: -> { "I'm false!" })).to eq("I'm false!")
86
+ end
87
+
88
+ it 'does nothing by default' do
89
+ expect(false.if(-> { "I'm true!" })).to be_nil
90
+ end
91
+ end
92
+
93
+ describe '#if_true' do
94
+ it 'returns self' do
95
+ expect(false.if_true { "I'm true!" }).to eq(false)
96
+ end
97
+ end
98
+
99
+ describe '#if_false' do
100
+ it 'evaluates the given block' do
101
+ expect { false.if_false { puts "I'm false!" } }.to output("I'm false!\n").to_stdout
102
+ end
103
+
104
+ it 'returns nil' do
105
+ expect(false.if_false { "I'm false!" }).to eq(false)
106
+ end
107
+ end
108
+
109
+ describe 'chaining #if_false and #if_true' do
110
+ it 'evaluates based on the original object' do
111
+ expect { nil.if_false { puts "I'm false!"; true }
112
+ .if_true { puts "I'm true!" } }
113
+ .to output("I'm false!\n").to_stdout
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,17 @@
1
+ RSpec.configure do |config|
2
+ config.filter_run :focus
3
+ config.run_all_when_everything_filtered = true
4
+ config.disable_monkey_patching!
5
+ config.warnings = true
6
+ config.order = :random
7
+ Kernel.srand config.seed
8
+ config.default_formatter = 'doc' if config.files_to_run.one?
9
+
10
+ config.expect_with :rspec do |expectations|
11
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
12
+ end
13
+
14
+ config.mock_with :rspec do |mocks|
15
+ mocks.verify_partial_doubles = true
16
+ end
17
+ end
metadata CHANGED
@@ -1,27 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: if
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
5
- prerelease:
4
+ version: 1.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Paul Mucur
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-07-09 00:00:00.000000000 Z
11
+ date: 2015-03-15 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: minitest
16
- requirement: &70173403583520 !ruby/object:Gem::Requirement
17
- none: false
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: '0'
19
+ version: '3.2'
22
20
  type: :development
23
21
  prerelease: false
24
- version_requirements: *70173403583520
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.2'
25
27
  description: A heavily Smalltalk-inspired implementation of the if conditional without
26
28
  using keywords.
27
29
  email: ruby.if@librelist.com
@@ -31,29 +33,30 @@ extra_rdoc_files: []
31
33
  files:
32
34
  - lib/if.rb
33
35
  - spec/if_spec.rb
34
- homepage: http://github.com/mudge/if
36
+ - spec/spec_helper.rb
37
+ homepage: https://github.com/mudge/if
35
38
  licenses: []
39
+ metadata: {}
36
40
  post_install_message:
37
41
  rdoc_options: []
38
42
  require_paths:
39
43
  - lib
40
44
  required_ruby_version: !ruby/object:Gem::Requirement
41
- none: false
42
45
  requirements:
43
- - - ! '>='
46
+ - - ">="
44
47
  - !ruby/object:Gem::Version
45
48
  version: '0'
46
49
  required_rubygems_version: !ruby/object:Gem::Requirement
47
- none: false
48
50
  requirements:
49
- - - ! '>='
51
+ - - ">="
50
52
  - !ruby/object:Gem::Version
51
53
  version: '0'
52
54
  requirements: []
53
55
  rubyforge_project:
54
- rubygems_version: 1.8.11
56
+ rubygems_version: 2.4.5
55
57
  signing_key:
56
- specification_version: 3
58
+ specification_version: 4
57
59
  summary: A Ruby implementation of the if conditional.
58
60
  test_files:
59
61
  - spec/if_spec.rb
62
+ - spec/spec_helper.rb