much-boolean 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 19242c1105e248ee22d620f3753f9df082af7a07
4
- data.tar.gz: c2da6ded6b3ff22e1c7999e81ad7bebe1c4c9be5
5
- SHA512:
6
- metadata.gz: c5df601f8ee5f18616f19fd2e3257daae376ec8e8d41bfc45066b96cbdedad74ee61a4483c964b4af47f8da933868e5312b301ff1a4108174172d328300b906a
7
- data.tar.gz: 3f087f6b1a4bbc1b27a9894d6771a409c0ba0868c33e4e91a5b25f21830d079f2135f67ca5814646a2767df4f0964a8db7a321ca532b61e3594ad757605d4c40
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 48aafb38b7e679d55b28931ecdd3faaecdf9002b
4
+ data.tar.gz: c4e0ffce78e57e3dc90c99cc057c100ba62cc39a
5
+ SHA512:
6
+ metadata.gz: b8327489713a0b0ddece4c7ba41977d780f3050c532d6a7fdc4e9c85a89544797ec2ef0bb62f1255f56ccf1aec62d11ac65e3d8b7aaad6a7f36df53d37dd5db0
7
+ data.tar.gz: f9fafdee5f32d913d492ff660e6c5c68fbead9788f9055c8cd88ba73717eb53d094e65649fa96dc7b37b02de7b22bcb5bec77aa664fbfe1a839c0c5439789848
data/Gemfile CHANGED
@@ -2,5 +2,4 @@ source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'rake', "~> 10.4.0"
6
5
  gem 'pry', "~> 0.9.0"
@@ -1,4 +1,4 @@
1
- Copyright (c) 2015-Present Kelly Redding and Collin Redding
1
+ Copyright (c) 2016-Present Kelly Redding and Collin Redding
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,10 +1,80 @@
1
1
  # MuchBoolean
2
2
 
3
- TODO: Write a gem description
3
+ An API for friendly boolean conversion, interpretation and handling
4
4
 
5
5
  ## Usage
6
6
 
7
- TODO: Write code samples and usage instructions here
7
+ ```ruby
8
+ require 'much-boolean'
9
+ MuchBoolean::FALSE_VALUES # => [ nil, 0, "0",
10
+ # false, "false", "False", "FALSE", "f", "F",
11
+ # "no", "No", "NO", "n", "N"
12
+ # ]
13
+
14
+ # nil, zero/one type values
15
+ MuchBoolean.convert(nil) # => false
16
+ MuchBoolean.convert(0) # => false
17
+ MuchBoolean.convert('0') # => false
18
+ MuchBoolean.convert(1) # => true
19
+ MuchBoolean.convert('1') # => true
20
+
21
+ # true/false type values
22
+ MuchBoolean.convert(false) # => false
23
+ MuchBoolean.convert("false") # => false
24
+ MuchBoolean.convert("False") # => false
25
+ MuchBoolean.convert("FALSE") # => false
26
+ MuchBoolean.convert("f") # => false
27
+ MuchBoolean.convert("F") # => false
28
+ MuchBoolean.convert(true) # => true
29
+ MuchBoolean.convert("true") # => true
30
+ MuchBoolean.convert("True") # => true
31
+ MuchBoolean.convert("TRUE") # => true
32
+ MuchBoolean.convert("t") # => true
33
+ MuchBoolean.convert("T") # => true
34
+
35
+ # yes/no type values
36
+ MuchBoolean.convert("no") # => false
37
+ MuchBoolean.convert("No") # => false
38
+ MuchBoolean.convert("NO") # => false
39
+ MuchBoolean.convert("n") # => false
40
+ MuchBoolean.convert("N") # => false
41
+ MuchBoolean.convert("yes") # => true
42
+ MuchBoolean.convert("Yes") # => true
43
+ MuchBoolean.convert("YES") # => true
44
+ MuchBoolean.convert("y") # => true
45
+ MuchBoolean.convert("Y") # => true
46
+
47
+ # all other values always interpreted as `true`
48
+ MuchBoolean.convert('some-string') # => true
49
+ MuchBoolean.convert('1938') # => true
50
+ MuchBoolean.convert('1938.5') # => true
51
+ MuchBoolean.convert(Date.today) # => true
52
+ MuchBoolean.convert(Time.now) # => true
53
+
54
+
55
+
56
+ # create instances to track given values and the actually boolean values they map to
57
+
58
+ bool = MuchBoolean.new
59
+ bool.given # => nil
60
+ bool.actual # => false
61
+
62
+ MuchBoolean::FALSE_VALUES.each do |val|
63
+ bool = MuchBoolean.new(val)
64
+ bool.given # => {val}
65
+ bool.actual # => false
66
+ bool == false # => true
67
+ bool == true # => false
68
+ end
69
+
70
+ ['some-string', '1938', '1938.5', Date.today, Time.now].each do |val|
71
+ bool = MuchBoolean.new(val)
72
+ bool.given # => {val}
73
+ bool.actual # => true
74
+ bool == true # => true
75
+ bool == false # => false
76
+ end
77
+ ```
8
78
 
9
79
  ## Installation
10
80
 
data/lib/much-boolean.rb CHANGED
@@ -1,5 +1,31 @@
1
1
  require "much-boolean/version"
2
2
 
3
- module MuchBoolean
4
- # TODO: your code goes here...
3
+ class MuchBoolean
4
+
5
+ FALSE_VALUES = [
6
+ nil,
7
+ 0, '0',
8
+ false, 'false', 'False', 'FALSE', 'f', 'F',
9
+ 'no', 'No', 'NO', 'n', 'N'
10
+ ].freeze
11
+
12
+ def self.convert(value)
13
+ !FALSE_VALUES.include?(value)
14
+ end
15
+
16
+ attr_reader :given, :actual
17
+
18
+ def initialize(given = nil)
19
+ @given = given
20
+ @actual = self.class.convert(@given)
21
+ end
22
+
23
+ def ==(other_boolean)
24
+ if other_boolean.kind_of?(MuchBoolean)
25
+ self.actual == other_boolean.actual
26
+ else
27
+ self.actual == other_boolean
28
+ end
29
+ end
30
+
5
31
  end
@@ -1,3 +1,3 @@
1
- module MuchBoolean
2
- VERSION = "0.0.1"
1
+ class MuchBoolean
2
+ VERSION = "0.1.0"
3
3
  end
data/much-boolean.gemspec CHANGED
@@ -7,10 +7,10 @@ Gem::Specification.new do |gem|
7
7
  gem.name = "much-boolean"
8
8
  gem.version = MuchBoolean::VERSION
9
9
  gem.authors = ["Kelly Redding", "Collin Redding"]
10
- gem.email = ["kelly@kellyredding.com", "collin.redding@me.com"]
11
- gem.description = %q{Much boolean}
12
- gem.summary = %q{Much boolean}
13
- gem.homepage = "http://github.com/redding/much-boolean"
10
+ gem.email = ["kelly@kellyredding.com", "collin.redding@me.com "]
11
+ gem.summary = "An API for friendly boolean conversion, interpretation and handling"
12
+ gem.description = "An API for friendly boolean conversion, interpretation and handling"
13
+ gem.homepage = "https://github.com/redding/much-boolean"
14
14
  gem.license = 'MIT'
15
15
 
16
16
  gem.files = `git ls-files`.split($/)
@@ -18,6 +18,6 @@ Gem::Specification.new do |gem|
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
19
  gem.require_paths = ["lib"]
20
20
 
21
- gem.add_development_dependency("assert", ["~> 2.14"])
21
+ gem.add_development_dependency("assert", ["~> 2.15.0"])
22
22
 
23
23
  end
data/test/helper.rb CHANGED
@@ -8,5 +8,3 @@ $LOAD_PATH.unshift(File.expand_path("../..", __FILE__))
8
8
  require 'pry'
9
9
 
10
10
  require 'test/support/factory'
11
-
12
- # TODO: put test helpers here...
@@ -0,0 +1,108 @@
1
+ require 'assert'
2
+ require 'much-boolean'
3
+
4
+ class MuchBoolean
5
+
6
+ class UnitTests < Assert::Context
7
+ desc "MuchBoolean"
8
+ subject{ MuchBoolean }
9
+
10
+ should have_imeth :convert
11
+
12
+ should "know its false values" do
13
+ exp = [
14
+ nil,
15
+ 0, '0',
16
+ false, 'false', 'False', 'FALSE', 'f', 'F',
17
+ 'no', 'No', 'NO', 'n', 'N'
18
+ ]
19
+ assert_equal exp, subject::FALSE_VALUES
20
+ end
21
+
22
+ should "convert nil values as `false`" do
23
+ assert_false MuchBoolean.convert(nil)
24
+ end
25
+
26
+ should "convert 'zero-ish' values as `false`" do
27
+ [0, '0'].each do |val|
28
+ assert_false MuchBoolean.convert(val)
29
+ end
30
+ end
31
+
32
+ should "convert 'false-ish' values as `false`" do
33
+ [false, 'false', 'False', 'FALSE', 'f', 'F'].each do |val|
34
+ assert_false MuchBoolean.convert(val)
35
+ end
36
+ end
37
+
38
+ should "convert 'no-ish' values as `false`" do
39
+ ['no', 'No', 'NO', 'n', 'N'].each do |val|
40
+ assert_false MuchBoolean.convert(val)
41
+ end
42
+ end
43
+
44
+ should "convert 'one-ish' values as `true`" do
45
+ [1, '1'].each do |val|
46
+ assert_true MuchBoolean.convert(val)
47
+ end
48
+ end
49
+
50
+ should "convert 'true-ish' values as `true`" do
51
+ [true, 'true', 'True', 'TRUE', 't', 'T'].each do |val|
52
+ assert_true MuchBoolean.convert(val)
53
+ end
54
+ end
55
+
56
+ should "convert 'yes-ish' values as `true`" do
57
+ ['yes', 'Yes', 'YES', 'y', 'Y'].each do |val|
58
+ assert_true MuchBoolean.convert(val)
59
+ end
60
+ end
61
+
62
+ should "convert all other values as `true`" do
63
+ [Factory.string, Factory.integer, Factory.date, Factory.time].each do |val|
64
+ assert_true MuchBoolean.convert(val)
65
+ end
66
+ end
67
+
68
+ end
69
+
70
+ class InitTests < UnitTests
71
+ desc "when init"
72
+ setup do
73
+ @actual = Factory.boolean
74
+ @bool = MuchBoolean.new(@actual)
75
+ end
76
+ subject{ @bool }
77
+
78
+ should have_reader :given, :actual
79
+
80
+ should "know its given and actual boolean values" do
81
+ assert_equal @actual, subject.given
82
+ assert_equal @actual, subject.actual
83
+
84
+ str = Factory.string
85
+ bool = MuchBoolean.new(str)
86
+ assert_equal str, bool.given
87
+ assert_true bool.actual
88
+ end
89
+
90
+ should "default its actual value to `false` when given nothing" do
91
+ bool = MuchBoolean.new
92
+ assert_nil bool.given
93
+ assert_false bool.actual
94
+ end
95
+
96
+ should "know if it is equal to another much boolean or not" do
97
+ equal_bool = MuchBoolean.new(@actual)
98
+ not_bool = MuchBoolean.new(!@actual)
99
+
100
+ assert_equal equal_bool, subject
101
+ assert_not_equal not_bool, subject
102
+ assert_equal subject, @actual
103
+ assert_not_equal subject, !@actual
104
+ end
105
+
106
+ end
107
+
108
+ end
metadata CHANGED
@@ -1,74 +1,77 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: much-boolean
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Kelly Redding
8
8
  - Collin Redding
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-07-17 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
12
+
13
+ date: 2016-01-11 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
15
16
  name: assert
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - "~>"
19
- - !ruby/object:Gem::Version
20
- version: '2.14'
21
- type: :development
22
17
  prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - "~>"
26
- - !ruby/object:Gem::Version
27
- version: '2.14'
28
- description: Much boolean
29
- email:
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: 2.15.0
23
+ type: :development
24
+ version_requirements: *id001
25
+ description: An API for friendly boolean conversion, interpretation and handling
26
+ email:
30
27
  - kelly@kellyredding.com
31
- - collin.redding@me.com
28
+ - "collin.redding@me.com "
32
29
  executables: []
30
+
33
31
  extensions: []
32
+
34
33
  extra_rdoc_files: []
35
- files:
36
- - ".gitignore"
34
+
35
+ files:
36
+ - .gitignore
37
37
  - Gemfile
38
- - LICENSE.txt
38
+ - LICENSE
39
39
  - README.md
40
- - Rakefile
41
40
  - lib/much-boolean.rb
42
41
  - lib/much-boolean/version.rb
43
42
  - log/.gitkeep
44
43
  - much-boolean.gemspec
45
44
  - test/helper.rb
46
45
  - test/support/factory.rb
46
+ - test/unit/much-boolean_tests.rb
47
47
  - tmp/.gitkeep
48
- homepage: http://github.com/redding/much-boolean
49
- licenses:
48
+ homepage: https://github.com/redding/much-boolean
49
+ licenses:
50
50
  - MIT
51
51
  metadata: {}
52
+
52
53
  post_install_message:
53
54
  rdoc_options: []
54
- require_paths:
55
+
56
+ require_paths:
55
57
  - lib
56
- required_ruby_version: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
- required_rubygems_version: !ruby/object:Gem::Requirement
62
- requirements:
63
- - - ">="
64
- - !ruby/object:Gem::Version
65
- version: '0'
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - &id002
61
+ - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - *id002
66
67
  requirements: []
68
+
67
69
  rubyforge_project:
68
- rubygems_version: 2.4.5
70
+ rubygems_version: 2.5.1
69
71
  signing_key:
70
72
  specification_version: 4
71
- summary: Much boolean
72
- test_files:
73
+ summary: An API for friendly boolean conversion, interpretation and handling
74
+ test_files:
73
75
  - test/helper.rb
74
76
  - test/support/factory.rb
77
+ - test/unit/much-boolean_tests.rb
data/Rakefile DELETED
@@ -1 +0,0 @@
1
- require "bundler/gem_tasks"