unboolean 0.0.1 → 0.0.2
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 +4 -4
- data/CHANGELOG.md +12 -0
- data/Gemfile +5 -0
- data/README.md +36 -3
- data/ROADMAP.md +14 -0
- data/Rakefile +18 -3
- data/lib/unboolean/core_ext.rb +3 -8
- data/lib/unboolean/core_ext/false_class.rb +16 -0
- data/lib/unboolean/core_ext/kernel.rb +8 -0
- data/lib/unboolean/core_ext/true_class.rb +16 -0
- data/lib/unboolean/maybe.rb +5 -0
- data/lib/unboolean/version.rb +1 -1
- data/spec/spec_helper.rb +9 -0
- data/spec/unboolean/core_ext/false_class_spec.rb +35 -0
- data/spec/unboolean/core_ext/true_class_spec.rb +35 -0
- data/spec/unboolean/maybe_spec.rb +29 -16
- data/unboolean.gemspec +4 -1
- metadata +54 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 39636868a0c0e24b9b6bee769408372e8837aa65
|
4
|
+
data.tar.gz: 419bd39b845e45630702fe65f8e740ec6b6bfe78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 184b4498979b9384180518e6105627973b4a8895b934fa991ee28786d0482c89d5def81c35b5181ead591362e0d58270f48e353e64e2be55c54f46f76921342d
|
7
|
+
data.tar.gz: b9297aba442e75b50885ae7a716cdd98afab62e58dbb52733c70915f890f22ec83cb7c076cc6e232b6928f17ccb0bb7ff435e184a37c77f06cf0ed2fbf01f5db
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
== 0.0.2
|
2
|
+
|
3
|
+
* Better inspect value for `Unboolean::Maybe` instance.
|
4
|
+
* Fix `true` and `false` methods: `:&`, `:|`, `:^`, `:!` (covered with RSpec)
|
5
|
+
* Structured code has a bit more logic. Maybe
|
6
|
+
* 100%-coverage of code
|
7
|
+
|
8
|
+
== 0.0.1
|
9
|
+
|
10
|
+
* Namespace `Unboolean`
|
11
|
+
* `Unboolean::Maybe` class that represents companion for `TrueClass` and `FalseClass` from Ruby core
|
12
|
+
* Kernel extension to provide convenient method to use `maybe` function in code
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,37 +1,66 @@
|
|
1
1
|
# Unboolean
|
2
2
|
|
3
|
+
[](https://travis-ci.org/alsemyonov/unboolean)
|
4
|
+
[](https://gemnasium.com/alsemyonov/unboolean)
|
5
|
+
[](https://codeclimate.com/github/alsemyonov/unboolean)
|
6
|
+
[](https://coveralls.io/r/alsemyonov/unboolean)
|
7
|
+
[](https://roadchange.com/alsemyonov/unboolean)
|
8
|
+
|
3
9
|
Boolean is too boring. Let’s add `maybe` to `true` and `false`.
|
4
10
|
|
11
|
+
## Project links
|
12
|
+
|
13
|
+
* [Source](https://github.com/alsemyonov/unboolean)
|
14
|
+
* [Issues](https://github.com/alsemyonov/unboolean/issues)
|
15
|
+
* Documentation: [Stable](https://rubydoc.info/gems/unboolean) and [Edge](https://rubydoc.info/github/alsemyonov/unboolean)
|
16
|
+
* [Wiki](https://github.com/alsemyonov/unboolean/wiki)
|
17
|
+
|
5
18
|
## Installation
|
6
19
|
|
7
20
|
Add this line to your application's Gemfile:
|
8
21
|
|
9
|
-
|
22
|
+
```ruby
|
23
|
+
gem 'unboolean'
|
24
|
+
```
|
10
25
|
|
11
26
|
And then execute:
|
12
27
|
|
13
|
-
|
28
|
+
```bash
|
29
|
+
$ bundle
|
30
|
+
```
|
14
31
|
|
15
32
|
Or install it yourself as:
|
16
33
|
|
17
|
-
|
34
|
+
```bash
|
35
|
+
$ gem install unboolean
|
36
|
+
```
|
18
37
|
|
19
38
|
## Usage
|
20
39
|
|
21
40
|
```ruby
|
22
41
|
maybe == maybe # => maybe
|
42
|
+
maybe == true # => maybe
|
43
|
+
maybe == false # => maybe
|
44
|
+
true == maybe # => maybe
|
45
|
+
false == true # => maybe
|
23
46
|
|
24
47
|
maybe & true # => maybe
|
25
48
|
maybe & false # => false
|
26
49
|
maybe & maybe # => maybe
|
50
|
+
true & maybe # => maybe
|
51
|
+
false & maybe # => false
|
27
52
|
|
28
53
|
maybe | true # => true
|
29
54
|
maybe | false # => maybe
|
30
55
|
maybe | maybe # => maybe
|
56
|
+
true | maybe # => true
|
57
|
+
false | maybe # => maybe
|
31
58
|
|
32
59
|
maybe ^ true # => maybe
|
33
60
|
maybe ^ false # => maybe
|
34
61
|
maybe ^ maybe # => maybe # Do you think it may not be? No! Everything may be.
|
62
|
+
true ^ maybe # => maybe
|
63
|
+
false ^ maybe # => maybe
|
35
64
|
|
36
65
|
!maybe # => maybe # Yes, it is still may be.
|
37
66
|
```
|
@@ -43,3 +72,7 @@ maybe ^ maybe # => maybe # Do you think it may not be? No! Everything may be.
|
|
43
72
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
44
73
|
4. Push to the branch (`git push origin my-new-feature`)
|
45
74
|
5. Create new Pull Request
|
75
|
+
|
76
|
+
## Copyright
|
77
|
+
|
78
|
+
© [Alexander Semyonov](mailto:al@semyonov.us), 2013, MIT License.
|
data/ROADMAP.md
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
== 0.0.5
|
2
|
+
|
3
|
+
* `Unboolean::Probably` representing `maybe` with less standard deviation
|
4
|
+
* Kernel extension to provide convenient method `probably` and `hardly`
|
5
|
+
|
6
|
+
== 0.0.4
|
7
|
+
|
8
|
+
* `Unboolean::Unlikely` and `Unboolean::Hardly` representing more unlikely values than `maybe`
|
9
|
+
* Kernel extension to provide convenient methods `unlikely` and `hardly`
|
10
|
+
|
11
|
+
== 0.0.3
|
12
|
+
|
13
|
+
* `Unboolean::Certainly` and `Unboolean::Likely` representing more likely values than `maybe`
|
14
|
+
* Kernel extension to provide convenient methods `certainly` and `likely`
|
data/Rakefile
CHANGED
@@ -1,6 +1,21 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
|
-
require 'rspec/core/rake_task'
|
3
2
|
|
4
|
-
|
3
|
+
begin
|
4
|
+
require 'yard'
|
5
|
+
YARD::Rake::YardocTask.new(:doc)
|
6
|
+
rescue LoadError
|
7
|
+
task :doc do
|
8
|
+
abort "YARD is not available. In order to run yardoc, you must: gem install yard"
|
9
|
+
end
|
10
|
+
end
|
5
11
|
|
6
|
-
|
12
|
+
begin
|
13
|
+
require 'rspec/core/rake_task'
|
14
|
+
RSpec::Core::RakeTask.new(:spec)
|
15
|
+
rescue LoadError
|
16
|
+
task :spec do
|
17
|
+
abort "RSpec is not available. In order to run specs, you must: gem install rspec"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
task default: :spec
|
data/lib/unboolean/core_ext.rb
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'unboolean'
|
2
|
+
require 'unboolean/maybe'
|
3
|
+
|
4
|
+
class FalseClass
|
5
|
+
def |(other)
|
6
|
+
other.is_a?(Unboolean::Maybe) ? other | self : !!(other)
|
7
|
+
end
|
8
|
+
|
9
|
+
def ^(other)
|
10
|
+
other.is_a?(Unboolean::Maybe) ? other ^ self : (!other).is_a?(FalseClass)
|
11
|
+
end
|
12
|
+
|
13
|
+
def ==(other)
|
14
|
+
other.is_a?(Unboolean::Maybe) ? other == self : (!!other).is_a?(FalseClass)
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'unboolean'
|
2
|
+
require 'unboolean/maybe'
|
3
|
+
|
4
|
+
class TrueClass
|
5
|
+
def &(other)
|
6
|
+
other.is_a?(Unboolean::Maybe) ? other & self : !!(other)
|
7
|
+
end
|
8
|
+
|
9
|
+
def ^(other)
|
10
|
+
other.is_a?(Unboolean::Maybe) ? other ^ self : (!other).is_a?(TrueClass)
|
11
|
+
end
|
12
|
+
|
13
|
+
def ==(other)
|
14
|
+
other.is_a?(Unboolean::Maybe) ? other == self : (!!other).is_a?(TrueClass)
|
15
|
+
end
|
16
|
+
end
|
data/lib/unboolean/maybe.rb
CHANGED
@@ -3,6 +3,7 @@ require 'singleton'
|
|
3
3
|
|
4
4
|
module Unboolean
|
5
5
|
class Maybe
|
6
|
+
# May be singleton?
|
6
7
|
def self.new
|
7
8
|
@__unboolean_maybe_instance ||= super
|
8
9
|
end
|
@@ -26,5 +27,9 @@ module Unboolean
|
|
26
27
|
def ==(*)
|
27
28
|
Maybe.new
|
28
29
|
end
|
30
|
+
|
31
|
+
def inspect
|
32
|
+
'maybe'
|
33
|
+
end
|
29
34
|
end
|
30
35
|
end
|
data/lib/unboolean/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,2 +1,11 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
require 'coveralls'
|
3
|
+
|
4
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
5
|
+
SimpleCov::Formatter::HTMLFormatter,
|
6
|
+
Coveralls::SimpleCov::Formatter
|
7
|
+
]
|
8
|
+
SimpleCov.start
|
9
|
+
|
1
10
|
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
11
|
require 'unboolean'
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe false do
|
4
|
+
subject { false }
|
5
|
+
|
6
|
+
specify('#=> false') { expect(subject).to eql(false) }
|
7
|
+
|
8
|
+
context '!' do
|
9
|
+
specify('#=> true') { expect(!subject).to eql(true) }
|
10
|
+
end
|
11
|
+
|
12
|
+
context '==' do
|
13
|
+
specify('true #=> false') { expect(subject == true).to eql(false) }
|
14
|
+
specify('false #=> true') { expect(subject == false).to eql(true) }
|
15
|
+
specify('maybe #=> maybe') { expect(subject == maybe).to eql(maybe) }
|
16
|
+
end
|
17
|
+
|
18
|
+
context '&' do
|
19
|
+
specify('true #=> false') { expect(subject & true).to eql(false) }
|
20
|
+
specify('false #=> false') { expect(subject & false).to eql(false) }
|
21
|
+
specify('maybe #=> false') { expect(subject & maybe).to eql(false) }
|
22
|
+
end
|
23
|
+
|
24
|
+
context '|' do
|
25
|
+
specify('true #=> true') { expect(subject | true).to eql(true) }
|
26
|
+
specify('false #=> false') { expect(subject | false).to eql(false) }
|
27
|
+
specify('maybe #=> maybe') { expect(subject | maybe).to eql(maybe) }
|
28
|
+
end
|
29
|
+
|
30
|
+
context '^' do
|
31
|
+
specify('true #=> true') { expect(subject ^ true).to eql(true) }
|
32
|
+
specify('false #=> false') { expect(subject ^ false).to eql(false) }
|
33
|
+
specify('maybe #=> maybe') { expect(subject ^ maybe).to eql(maybe) }
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe true do
|
4
|
+
subject { true }
|
5
|
+
|
6
|
+
specify('#=> true') { expect(subject).to eql(true) }
|
7
|
+
|
8
|
+
context '!' do
|
9
|
+
specify('#=> false') { expect(!subject).to eql(false) }
|
10
|
+
end
|
11
|
+
|
12
|
+
context '==' do
|
13
|
+
specify('true #=> true') { expect(subject == true).to eql(true) }
|
14
|
+
specify('false #=> false') { expect(subject == false).to eql(false) }
|
15
|
+
specify('maybe #=> maybe') { expect(subject == maybe).to eql(maybe) }
|
16
|
+
end
|
17
|
+
|
18
|
+
context '&' do
|
19
|
+
specify('true #=> true') { expect(subject & true).to eql(true) }
|
20
|
+
specify('false #=> false') { expect(subject & false).to eql(false) }
|
21
|
+
specify('maybe #=> maybe') { expect(subject & maybe).to eql(maybe) }
|
22
|
+
end
|
23
|
+
|
24
|
+
context '|' do
|
25
|
+
specify('true #=> true') { expect(subject | true).to eql(true) }
|
26
|
+
specify('false #=> true') { expect(subject | false).to eql(true) }
|
27
|
+
specify('maybe #=> true') { expect(subject | maybe).to eql(true) }
|
28
|
+
end
|
29
|
+
|
30
|
+
context '^' do
|
31
|
+
specify('true #=> false') { expect(subject ^ true).to eql(false) }
|
32
|
+
specify('false #=> true') { expect(subject ^ false).to eql(true) }
|
33
|
+
specify('maybe #=> maybe') { expect(subject ^ maybe).to eql(maybe) }
|
34
|
+
end
|
35
|
+
end
|
@@ -1,24 +1,37 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
4
|
-
subject(:maybe) {
|
3
|
+
describe 'maybe' do
|
4
|
+
subject(:maybe) { Unboolean::Maybe.new }
|
5
5
|
|
6
|
-
|
7
|
-
specify('NOT maybe may be maybe') { expect(!maybe).to eql(maybe) }
|
6
|
+
its(:inspect) { should == 'maybe' }
|
8
7
|
|
9
|
-
specify('
|
10
|
-
specify('maybe MAY BE equal to true') { expect(maybe == true).to eql(maybe) }
|
11
|
-
specify('maybe MAY BE equal to false') { expect(maybe == false).to eql(maybe) }
|
8
|
+
specify('#=> maybe') { expect(subject).to eql(maybe) }
|
12
9
|
|
13
|
-
|
14
|
-
|
15
|
-
|
10
|
+
context '!' do
|
11
|
+
specify('#=> maybe') { expect(!subject).to eql(maybe) }
|
12
|
+
end
|
16
13
|
|
17
|
-
|
18
|
-
|
19
|
-
|
14
|
+
context '==' do
|
15
|
+
specify('true #=> maybe') { expect(subject == true).to eql(maybe) }
|
16
|
+
specify('false #=> maybe') { expect(subject == false).to eql(maybe) }
|
17
|
+
specify('maybe #=> maybe') { expect(subject == maybe).to eql(maybe) }
|
18
|
+
end
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
context '&' do
|
21
|
+
specify('true #=> maybe') { expect(subject & true).to eql(maybe) }
|
22
|
+
specify('false #=> false') { expect(subject & false).to eql(false) }
|
23
|
+
specify('maybe #=> maybe') { expect(subject & maybe).to eql(maybe) }
|
24
|
+
end
|
25
|
+
|
26
|
+
context '|' do
|
27
|
+
specify('true #=> true') { expect(subject | true).to eql(true) }
|
28
|
+
specify('false #=> maybe') { expect(subject | false).to eql(maybe) }
|
29
|
+
specify('maybe #=> maybe') { expect(subject | maybe).to eql(maybe) }
|
30
|
+
end
|
31
|
+
|
32
|
+
context '^' do
|
33
|
+
specify('true #=> maybe') { expect(subject ^ true).to eql(maybe) }
|
34
|
+
specify('false #=> maybe') { expect(subject ^ false).to eql(maybe) }
|
35
|
+
specify('maybe #=> maybe') { expect(subject ^ maybe).to eql(maybe) }
|
36
|
+
end
|
24
37
|
end
|
data/unboolean.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = %w(al@semyonov.us)
|
11
11
|
spec.description = %q{Boolean is too boring. Let’s add Maybe value.}
|
12
12
|
spec.summary = %q{True, false, or Maybe?}
|
13
|
-
spec.homepage = ''
|
13
|
+
spec.homepage = 'https://github.com/alsemyonov/unboolean'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
@@ -21,4 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
22
22
|
spec.add_development_dependency 'rake'
|
23
23
|
spec.add_development_dependency 'rspec'
|
24
|
+
spec.add_development_dependency 'simplecov'
|
25
|
+
spec.add_development_dependency 'coveralls'
|
26
|
+
spec.add_development_dependency 'yard'
|
24
27
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unboolean
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Semyonov
|
@@ -52,6 +52,48 @@ dependencies:
|
|
52
52
|
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simplecov
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: coveralls
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: yard
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
55
97
|
description: Boolean is too boring. Let’s add Maybe value.
|
56
98
|
email:
|
57
99
|
- al@semyonov.us
|
@@ -62,19 +104,26 @@ files:
|
|
62
104
|
- .gitignore
|
63
105
|
- .rspec
|
64
106
|
- .travis.yml
|
107
|
+
- CHANGELOG.md
|
65
108
|
- Gemfile
|
66
109
|
- LICENSE.txt
|
67
110
|
- README.md
|
111
|
+
- ROADMAP.md
|
68
112
|
- Rakefile
|
69
113
|
- lib/unboolean.rb
|
70
114
|
- lib/unboolean/core_ext.rb
|
115
|
+
- lib/unboolean/core_ext/false_class.rb
|
116
|
+
- lib/unboolean/core_ext/kernel.rb
|
117
|
+
- lib/unboolean/core_ext/true_class.rb
|
71
118
|
- lib/unboolean/maybe.rb
|
72
119
|
- lib/unboolean/version.rb
|
73
120
|
- spec/spec_helper.rb
|
121
|
+
- spec/unboolean/core_ext/false_class_spec.rb
|
122
|
+
- spec/unboolean/core_ext/true_class_spec.rb
|
74
123
|
- spec/unboolean/maybe_spec.rb
|
75
124
|
- spec/unboolean_spec.rb
|
76
125
|
- unboolean.gemspec
|
77
|
-
homepage:
|
126
|
+
homepage: https://github.com/alsemyonov/unboolean
|
78
127
|
licenses:
|
79
128
|
- MIT
|
80
129
|
metadata: {}
|
@@ -100,5 +149,8 @@ specification_version: 4
|
|
100
149
|
summary: True, false, or Maybe?
|
101
150
|
test_files:
|
102
151
|
- spec/spec_helper.rb
|
152
|
+
- spec/unboolean/core_ext/false_class_spec.rb
|
153
|
+
- spec/unboolean/core_ext/true_class_spec.rb
|
103
154
|
- spec/unboolean/maybe_spec.rb
|
104
155
|
- spec/unboolean_spec.rb
|
156
|
+
has_rdoc:
|