certainty 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.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - jruby
6
+ - rbx
7
+ - rbx-2.0
8
+ - ree
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in boolean.gemspec
4
+ gemspec
5
+
6
+ gem "rake"
data/README.md ADDED
@@ -0,0 +1,12 @@
1
+ # Boolean
2
+
3
+ Boolean is an object that represents truth.
4
+
5
+ [![travis](https://secure.travis-ci.org/hakanensari/boolean.png)](http://travis-ci.org/hakanensari/boolean)
6
+
7
+ ## Usage
8
+
9
+ Once you require, inquire.
10
+
11
+ true.is_a? Boolean
12
+ => true
data/Rakefile ADDED
@@ -0,0 +1,9 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+
4
+ task :default => :test
5
+
6
+ Rake::TestTask.new do |test|
7
+ test.libs << 'test'
8
+ test.test_files = FileList['test/**/*_test.rb']
9
+ end
data/certainty.gemspec ADDED
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "certainty/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "certainty"
7
+ s.version = Certainty::VERSION
8
+ s.authors = ["Hakan Ensari"]
9
+ s.email = ["code@papercavalier.com"]
10
+ s.homepage = "http://github.com/hakanensari/certainty"
11
+ s.summary = %q{An object that represents truth}
12
+ s.description = %q{Certainty sneaks Boolean, an object that represents truth, into Ruby.}
13
+
14
+ s.rubyforge_project = "certainty"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+ end
@@ -0,0 +1,3 @@
1
+ module Certainty
2
+ VERSION = '0.1.0'
3
+ end
data/lib/certainty.rb ADDED
@@ -0,0 +1,59 @@
1
+ # = Certainty
2
+ #
3
+ # Sneaks +Boolean+, an object that represents truth, into Ruby.
4
+ module Boolean; end
5
+
6
+ [TrueClass, FalseClass].each do |klass|
7
+ klass.send :include, Boolean
8
+ end
9
+
10
+ class Object
11
+ # Returns +nil+. The truth of an object, by default, is not knowable.
12
+ def to_bool
13
+ nil
14
+ end
15
+ alias to_b to_bool
16
+ end
17
+
18
+ module Boolean
19
+ # Returns the receiver. The truth of a boolean object is
20
+ # self-referential.
21
+ def to_bool
22
+ self
23
+ end
24
+ alias to_b to_bool
25
+ end
26
+
27
+ class String
28
+ # Returns +true+ if, downcased, the receiver is +"1"+ or +"true"+,
29
+ # +false+ if it is +"0"+ or +"false"+, or +nil+ otherwise.
30
+ def to_bool
31
+ {
32
+ '1' => true,
33
+ 'true' => true,
34
+ '0' => false,
35
+ 'false' => false
36
+ }[downcase]
37
+ end
38
+ alias to_b to_bool
39
+ end
40
+
41
+ class Numeric
42
+ # Returns + true+ if the receiver, converted to float, is equal to
43
+ # +1.0+, +false+ if it is equal +0.0+, or +nil+ otherwise.
44
+ def to_bool
45
+ {
46
+ 1.0 => true,
47
+ 0.0 => false
48
+ }[to_f]
49
+ end
50
+ alias to_b to_bool
51
+ end
52
+
53
+ module Kernel
54
+ # Converts _arg_ to a boolean object or +nil+ if its truth is not
55
+ # knowable.
56
+ def Boolean(arg)
57
+ arg.to_bool
58
+ end
59
+ end
@@ -0,0 +1,39 @@
1
+ $:.push File.expand_path('../../lib', __FILE__)
2
+
3
+ require 'rubygems'
4
+ require 'bundler/setup'
5
+
6
+ require 'certainty'
7
+ require 'test/unit'
8
+
9
+ class TestCertainty < Test::Unit::TestCase
10
+ def test_existence
11
+ assert_kind_of Boolean, true
12
+ assert_kind_of Boolean, false
13
+ end
14
+
15
+ def test_boolean_representation
16
+ assert_equal true, true.to_bool
17
+ assert_equal false, false.to_b
18
+
19
+ assert_equal true, 'true'.to_b
20
+ assert_equal true, '1'.to_b
21
+ assert_equal false, 'FALSE'.to_b
22
+ assert_equal false, '0'.to_b
23
+ assert_nil 'foo'.to_b
24
+
25
+ assert_equal true, 1.to_b
26
+ assert_equal false, 0.0.to_b
27
+ assert_nil 2.to_b
28
+
29
+ assert_nil nil.to_b
30
+ end
31
+
32
+ def test_conversion
33
+ assert_equal true, Boolean(true)
34
+ assert_equal true, Boolean('1')
35
+ assert_equal false, Boolean(false)
36
+ assert_equal false, Boolean('0')
37
+ assert_equal nil, Boolean('foo')
38
+ end
39
+ end
metadata ADDED
@@ -0,0 +1,61 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: certainty
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Hakan Ensari
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-08-20 00:00:00.000000000Z
13
+ dependencies: []
14
+ description: Certainty sneaks Boolean, an object that represents truth, into Ruby.
15
+ email:
16
+ - code@papercavalier.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - .gitignore
22
+ - .travis.yml
23
+ - Gemfile
24
+ - README.md
25
+ - Rakefile
26
+ - certainty.gemspec
27
+ - lib/certainty.rb
28
+ - lib/certainty/version.rb
29
+ - test/certainty_test.rb
30
+ homepage: http://github.com/hakanensari/certainty
31
+ licenses: []
32
+ post_install_message:
33
+ rdoc_options: []
34
+ require_paths:
35
+ - lib
36
+ required_ruby_version: !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ! '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ segments:
43
+ - 0
44
+ hash: 2654129636937927522
45
+ required_rubygems_version: !ruby/object:Gem::Requirement
46
+ none: false
47
+ requirements:
48
+ - - ! '>='
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ segments:
52
+ - 0
53
+ hash: 2654129636937927522
54
+ requirements: []
55
+ rubyforge_project: certainty
56
+ rubygems_version: 1.8.6
57
+ signing_key:
58
+ specification_version: 3
59
+ summary: An object that represents truth
60
+ test_files:
61
+ - test/certainty_test.rb