attribool 0.0.1 → 0.0.2

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
1
  ---
2
2
  SHA256:
3
- metadata.gz: 469b94667c5be65a2901c9049f8290711c823fc7d08226140471c4c8820e66df
4
- data.tar.gz: 526c90658fc7f1ac712383083a5c38ced3088f3ed91fc32af3a6801e7c0352cc
3
+ metadata.gz: 04a8612ea59018c8c1ace211692e9100676136ac77613627b8e8b0b295cf3bae
4
+ data.tar.gz: fe39cccfee3277bd92028940a54313e10861445a1b486d4791942875a3cb918a
5
5
  SHA512:
6
- metadata.gz: 90be0ebf1c939bf765d0dd3848cf273b00606d4e00335418b1fc44de239ffb5f2042032525a22f9b205b9b10b6ff71126ba0a3c01449d2957fe328f4be354359
7
- data.tar.gz: 48dbb1b70a57413523a962d29432343e5c7117f06ceae8063a7de1a5306595bab5f469db638a25bed1074efee037982e4a776c75334168e9d6e0064359e9e240
6
+ metadata.gz: 762bd93ec17802176022253614871443f0e388892558d455b697b90e69d26be00917f6cd5b803f105e6ace168985e85a4c14305059e92886500bbb3f035efcff
7
+ data.tar.gz: 1b125fffc61d42dc9a8b63b77b625f57786ca03c44a2045a7bb1685bb5ea1d6c8e36ffa5fa6104b14fde943e79bedcfb8d5b92da88a59c1b0dd1f692b67098d2
@@ -0,0 +1,24 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ test:
11
+
12
+ runs-on: ubuntu-latest
13
+
14
+ steps:
15
+ - uses: actions/checkout@v2
16
+ - name: Set up Ruby 2.6
17
+ uses: actions/setup-ruby@v1
18
+ with:
19
+ ruby-version: 2.6.x
20
+ - name: Build and test with Rake
21
+ run: |
22
+ gem install bundler
23
+ bundle install
24
+ bundle exec rake test
data/.gitignore CHANGED
@@ -1,2 +1,3 @@
1
1
  attribool-*.gem
2
2
  coverage/*
3
+ docs/*
data/README.md CHANGED
@@ -1,4 +1,10 @@
1
1
  # Attribool
2
+ [![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fevanthegrayt%2Fattribool%2Fbadge%3Fref%3Dmaster&style=flat)](https://actions-badge.atrox.dev/evanthegrayt/attribool/goto?ref=master)
3
+ [![Gem Version](https://badge.fury.io/rb/attribool.svg)](https://badge.fury.io/rb/attribool)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+
6
+ > Pre-release version. Everything works, but not everything is documented.
7
+
2
8
  Ruby macros for creating boolean methods for attributes that may or may not be
3
9
  booleans themselves. This is done via coercion based on truthiness. For example,
4
10
  if you have an attribute of `@name`, and you want to know if `@name` is not
@@ -17,6 +23,8 @@ Macros also exist for `bool_writer` and `bool_accessor`. When a writer
17
23
  method is defined, the value will always be coerced into a boolean before
18
24
  setting the attribute.
19
25
 
26
+ You can read the documentation [here](https://evanthegrayt.github.io/attribool/).
27
+
20
28
  ## Installation
21
29
  #### Via Gemfile
22
30
  ```ruby
@@ -41,7 +49,7 @@ bundle exec rake install
41
49
  require 'attribool'
42
50
 
43
51
  class Person
44
- extend Attribool
52
+ include Attribool
45
53
 
46
54
  attr_accessor :name
47
55
  bool_reader :name
@@ -63,11 +71,11 @@ person.name?
63
71
  require 'attribool'
64
72
 
65
73
  class Person
66
- extend Attribool
74
+ include Attribool
67
75
 
68
76
  attr_accessor :name
69
77
  bool_reader :name, method: :named?
70
- bool_reader :name, prefix: :has?
78
+ bool_reader :name, prefix: :has
71
79
  end
72
80
 
73
81
  person = Person.new
@@ -86,7 +94,7 @@ person.has_name?
86
94
  require 'attribool'
87
95
 
88
96
  class Person
89
- extend Attribool
97
+ include Attribool
90
98
 
91
99
  attr_accessor :age
92
100
  # In the condition lambdas, the argument refers to the attribute's value.
@@ -111,7 +119,7 @@ person.adult?
111
119
  require 'attribool'
112
120
 
113
121
  class Person
114
- extend Attribool
122
+ include Attribool
115
123
 
116
124
  bool_accessor :living
117
125
  end
@@ -123,5 +131,17 @@ person.living?
123
131
  person.living = true
124
132
  person.living?
125
133
  # true, because @living is true.
126
- # Be aware -- if you pass a string, it will be coerced to true!
134
+ # Be aware -- if you pass anything truthy, it will be coerced to true!
127
135
  ```
136
+
137
+ ## Reporting Bugs and Requesting Features
138
+ If you have an idea or find a bug, please [create an
139
+ issue](https://github.com/evanthegrayt/attribool/issues/new). Just make sure
140
+ the topic doesn't already exist. Better yet, you can always submit a Pull
141
+ Request.
142
+
143
+ ## Self-Promotion
144
+ I do these projects for fun, and I enjoy knowing that they're helpful to people.
145
+ Consider starring [the repository](https://github.com/evanthegrayt/attribool)
146
+ if you like it! If you love it, follow me [on
147
+ Github](https://github.com/evanthegrayt)!
data/Rakefile CHANGED
@@ -14,7 +14,7 @@ end
14
14
 
15
15
  RDoc::Task.new do |rdoc|
16
16
  rdoc.main = 'README.md'
17
- rdoc.rdoc_dir = 'doc'
17
+ rdoc.rdoc_dir = 'docs'
18
18
  rdoc.rdoc_files.include('README.md', 'lib/**/*.rb')
19
19
  end
20
20
 
data/attribool.gemspec CHANGED
@@ -19,10 +19,8 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.metadata['allowed_push_host'] = 'https://rubygems.org'
21
21
  spec.metadata['homepage_uri'] = spec.homepage
22
- spec.metadata['source_code_uri'] =
23
- 'https://github.com/evanthegrayt/attribool'
24
- spec.metadata['documentation_uri'] =
25
- 'https://evanthegrayt.github.io/attribool/doc/index.html'
22
+ spec.metadata['source_code_uri'] = 'https://github.com/evanthegrayt/attribool'
23
+ spec.metadata['documentation_uri'] = 'https://evanthegrayt.github.io/attribool/'
26
24
 
27
25
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
28
26
  f.match(%r{^(test|spec|features)/})
data/lib/attribool.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  ##
4
4
  # Adds macros and methods for dealing with boolean attributes.
5
5
  module Attribool
6
- def self.included(klass)
6
+ def self.included(klass) # :nodoc:
7
7
  klass.extend(ClassMethods)
8
8
  end
9
9
 
@@ -36,7 +36,7 @@ module Attribool
36
36
  ivar = instance_variable_get("@#{attribute}")
37
37
  raise TypeError, "#{attribute} is nil" if ivar.nil? && !allow_nil
38
38
 
39
- condition ? condition.call(ivar) : to_boolean(ivar)
39
+ condition ? condition.call(ivar) : !!(ivar)
40
40
  end
41
41
  end
42
42
 
@@ -49,9 +49,11 @@ module Attribool
49
49
  # @kwarg [Boolean] strict:
50
50
  def bool_writer(attribute, strict: false)
51
51
  define_method("#{attribute}=") do |v|
52
- validate_boolean(v) if strict
52
+ if strict && ![TrueClass, FalseClass].include?(v.class)
53
+ raise ArgumentError, 'Argument must be a boolean'
54
+ end
53
55
 
54
- instance_variable_set("@#{attribute}", to_boolean(v))
56
+ instance_variable_set("@#{attribute}", !!v)
55
57
  end
56
58
  end
57
59
 
@@ -65,32 +67,4 @@ module Attribool
65
67
  bool_writer(attribute)
66
68
  end
67
69
  end
68
-
69
- ##
70
- # Is the argument a boolean?
71
- #
72
- # @param [Object] attribute
73
- #
74
- # @return [Boolean]
75
- def boolean?(attribute)
76
- [TrueClass, FalseClass].include?(attribute.class)
77
- end
78
-
79
- ##
80
- # Converts an Object to a boolean.
81
- #
82
- # @param [Object] attribute
83
- #
84
- # @return [Boolean]
85
- def to_boolean(attribute)
86
- !!attribute
87
- end
88
-
89
- private
90
-
91
- ##
92
- # Raises if argument is not a boolean.
93
- def validate_boolean(attribute) # :nodoc:
94
- raise ArgumentError, 'Argument must be a boolean' unless boolean?(attribute)
95
- end
96
70
  end
@@ -21,7 +21,7 @@ module Attribool
21
21
  # Patch version.
22
22
  #
23
23
  # @return [Integer]
24
- PATCH = 1
24
+ PATCH = 2
25
25
 
26
26
  ##
27
27
  # Version as +MAJOR.MINOR.PATCH+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: attribool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evan Gray
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-22 00:00:00.000000000 Z
11
+ date: 2021-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -70,6 +70,7 @@ executables: []
70
70
  extensions: []
71
71
  extra_rdoc_files: []
72
72
  files:
73
+ - ".github/workflows/ruby.yml"
73
74
  - ".gitignore"
74
75
  - Gemfile
75
76
  - Gemfile.lock
@@ -86,7 +87,7 @@ metadata:
86
87
  allowed_push_host: https://rubygems.org
87
88
  homepage_uri: https://github.com/evanthegrayt/attribool
88
89
  source_code_uri: https://github.com/evanthegrayt/attribool
89
- documentation_uri: https://evanthegrayt.github.io/attribool/doc/index.html
90
+ documentation_uri: https://evanthegrayt.github.io/attribool/
90
91
  post_install_message:
91
92
  rdoc_options: []
92
93
  require_paths: