inquisitive 4.0.0 → 4.0.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1bf41f9d4ffbed28a841aaab8e093bcd954ec01c
4
- data.tar.gz: 489460f2ad128b65ad6f0802619e03fbfaab1034
3
+ metadata.gz: 29f4741cd183b7dec38982c69c052fb110100dae
4
+ data.tar.gz: 1817fdcfcf9abdb0c0c345881789097dcda517d6
5
5
  SHA512:
6
- metadata.gz: 7c1b287a58cd1553cc9494f44f66a047f0dee425854c07255b770e050073b358564f6e9d55d9733ab18b406301be9005208d3354c1fb117f1fa1da65086ab9b8
7
- data.tar.gz: 0de5a6cbb898c07464c96001903c699ea8797d608bf557a1e65ed10b996c7097ee72f3b599404b8baa59d7bc0155c88e5237613c60ea7a03671759506b9f7a0d
6
+ metadata.gz: 4c71a6dd16ddf4da130641cfa791fe5c53d84ae1a9b886aff048d5619aecf6279b69fc3e0bc8a9efb2293402a2d5cda341cdb1594b4682dc64cc5b6747723ca3
7
+ data.tar.gz: b02442864df34a6a8eced15f51d5a7f0ca7a4988220efb6fe92e1acb178ce548fa5a5f3e7142d32c6452bd76f51193e167208633887a35ea6519a4c4408b449d
@@ -1,7 +1,8 @@
1
1
  language: ruby
2
2
 
3
+ sudo: false
4
+
3
5
  rvm:
4
- - 1.9.3
5
6
  - 2.0.0
6
7
  - 2.1
7
8
  - 2.2
@@ -15,23 +16,25 @@ gemfile:
15
16
 
16
17
  env:
17
18
  - ""
18
- - "activesupport=3.2.18"
19
- - "activesupport=4.1.1"
19
+ - "activesupport=3.2.22"
20
+ - "activesupport=4.1.12"
21
+ - "activesupport=4.2.3"
20
22
  - "activesupport=master"
21
23
 
22
24
  matrix:
23
25
  fast_finish: true
24
26
  allow_failures:
25
- - rvm: 1.9.3
26
- - rvm: jruby # Until it gets up to 2.0.0 syntax
27
- - rvm: rbx-2 # Ditto
27
+ - rvm: jruby
28
+ - rvm: rbx-2
28
29
  exclude:
29
30
  - gemfile: Gemfile.ActiveSupport
30
31
  env: ""
31
32
  - gemfile: Gemfile
32
- env: "activesupport=3.2.18"
33
+ env: "activesupport=3.2.22"
34
+ - gemfile: Gemfile
35
+ env: "activesupport=4.1.12"
33
36
  - gemfile: Gemfile
34
- env: "activesupport=4.1.1"
37
+ env: "activesupport=4.2.3"
35
38
  - gemfile: Gemfile
36
39
  env: "activesupport=master"
37
40
 
data/README.md CHANGED
@@ -3,18 +3,18 @@ Inquisitive
3
3
 
4
4
  > **Predicate methods for those curious about their datastructures.**
5
5
 
6
-
7
-
8
6
  Synopsis
9
7
  --------
10
8
 
11
- Inquisitive provides String, Array, and Hash subclasses with dynamic predicate methods that allow you to interrogate the most common Ruby datastructures in a readable, friendly fashion. It's the inevitable evolution of ActiveSupport's `StringInquirer`.
9
+ Inquisitive provides String, Array, and Hash subclasses with dynamic predicate methods that allow you to interrogate the most common Ruby datastructures in a readable, friendly fashion. It's the inevitable evolution of ActiveSupport's [`StringInquirer`](https://github.com/rails/rails/blob/master/activesupport/lib/active_support/string_inquirer.rb).
12
10
 
13
11
  It also allows you to elegantly interrogate your `ENV` hash through the `Inquisitive::Environment` module.
14
12
 
15
- Inquisitive will try to use ActiveSupport's `HashWithIndifferentAccess`, but if that cannot be found it will bootstrap itself with a minimal, well-tested version extracted from ActiveSupport 4.0.
13
+ Inquisitive will try to use ActiveSupport's [`HashWithIndifferentAccess`](guides.rubyonrails.org/active_support_core_extensions.html#indifferent-access), but if that cannot be found it will bootstrap itself with a minimal, well-tested version extracted from [ActiveSupport 4.0](https://github.com/rails/rails/blob/4-0-stable/activesupport/lib/active_support/hash_with_indifferent_access.rb).
16
14
 
15
+ Inquisitive is tested against all maintained versions of Ruby and ActiveSupport.
17
16
 
17
+ --------------------------------------------------------------------------------
18
18
 
19
19
  Status
20
20
  ------
@@ -41,12 +41,12 @@ Status
41
41
 
42
42
  [![Version][version-image]][version] [![Quality][quality-image]][quality] [![Dependencies][dependencies-image]][dependencies]
43
43
 
44
- | :thumbsup: | [Continuous Integration][status] | [Test Coverage][coverage] |
44
+ | :thumbsup: | [Continuous Integration][status] | [Test Coverage][coverage] |
45
45
  |:--------------------------:|:-----------------------------------:|:----------------------------------------:|
46
- | [Master][master] | ![Build Status][master-status] | ![Coverage Status][master-coverage] |
46
+ | [Master][master] | ![Build Status][master-status] | ![Coverage Status][master-coverage] |
47
47
  | [Development][development] | ![Build Status][development-status] | ![Coverage Status][development-coverage] |
48
48
 
49
-
49
+ --------------------------------------------------------------------------------
50
50
 
51
51
  Installation
52
52
  ------------
@@ -64,7 +64,7 @@ Otherwise:
64
64
  $ gem install inquisitive
65
65
  ```
66
66
 
67
-
67
+ --------------------------------------------------------------------------------
68
68
 
69
69
  Usage
70
70
  -----
@@ -499,7 +499,7 @@ ENV['TRUTHY'] = 'TrUe'
499
499
  ENV['FALSEY'] = 'FaLsE'
500
500
  ENV['BOOLEAN'] = '1'
501
501
  ENV['BOOLENOPE'] = '0'
502
- class MyCli
502
+ class MyApp
503
503
  extend Inquisitive::Environment
504
504
  inquires_about 'NO', present_if: truthy
505
505
  inquires_about 'YES', present_if: truthy
@@ -525,7 +525,18 @@ MyApp.boolenope?
525
525
  #=> false
526
526
  ```
527
527
 
528
+ --------------------------------------------------------------------------------
529
+
530
+ Origins
531
+ -------
532
+
533
+ The idea for Inquisitive originated with [this pull request](https://github.com/rails/rails/pull/12587), as I was going through a complicated Rails application and making it more 12-factor friendly by extracting much of the configuration into environment variables.
534
+
535
+ By the end of my effort, my configuration was substantially more *centralized* and *standardized*, but far more *complicated*. These complications arose in two places: adding, managing, permuting, and documenting my `.env` file consumed by [dotenv](https://github.com/bkeepers/dotenv); and organizing, parsing, and switching on those values injected into the `ENV`.
536
+
537
+ My pull request, and later Inquisitive, was extracted from my treatment of the latter complication. My solution to the former, [starenv](https://github.com/christhekeele/starenv), was a generally more complicated beast.
528
538
 
539
+ --------------------------------------------------------------------------------
529
540
 
530
541
  Contributing
531
542
  ------------
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'inquisitive'
7
- spec.version = '4.0.0'
7
+ spec.version = '4.0.1'
8
8
  spec.authors = ['Chris Keele']
9
9
  spec.email = ['dev@chriskeele.com']
10
10
  spec.summary = 'Predicate methods for those curious about their datastructures.'
@@ -35,6 +35,10 @@ module Inquisitive
35
35
  other.class == Class and other == ::NilClass or super
36
36
  end
37
37
 
38
+ def to_str
39
+ ""
40
+ end
41
+
38
42
  private
39
43
 
40
44
  def respond_to_missing?(method_name, include_private = false)
@@ -46,6 +46,22 @@ class InquisitiveEnvironmentTest < EnvironmentTest
46
46
  end
47
47
  end
48
48
 
49
+ %w[false False FaLsE FALSE no No nO NO 0 anything_else].each do |falsey_var|
50
+ define_method :"test_falsey_var_#{falsey_var}" do
51
+ App.inquires_about 'TRUTHY', present_if: App.truthy
52
+ ENV['TRUTHY'] = 'true'
53
+ assert App.truthy?
54
+ ENV['TRUTHY'] = falsey_var
55
+ refute App.truthy?
56
+ end
57
+ end
58
+
59
+ def test_array_squishing
60
+ App.inquires_about 'SQUISHIBLE_ARRAY'
61
+ ENV['SQUISHIBLE_ARRAY'] = 'foo, bar, baz'
62
+ assert_equal %w[foo bar baz], App.squishible_array
63
+ end
64
+
49
65
  def test_default_accessor_for_missing
50
66
  App.inquires_about 'MISSING_WITH_DEFAULT', default: 'default'
51
67
  assert_equal 'default', App.missing_with_default
@@ -7,6 +7,10 @@ module NilObjectTests
7
7
  assert_instance_of Inquisitive::NilClass, nil_object.chain
8
8
  end
9
9
 
10
+ def test_nil_object_acts_as_black_hole
11
+ assert nil_object.respond_to? :anything
12
+ end
13
+
10
14
  def test_nil_object_match
11
15
  assert nil_object.nil?
12
16
  end
@@ -62,4 +66,8 @@ module NilObjectTests
62
66
  refute hash.no.no.development?
63
67
  end
64
68
 
69
+ def test_nil_coercable_to_empty_string
70
+ assert_equal nil_object.to_str, ""
71
+ end
72
+
65
73
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inquisitive
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Keele
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-06 00:00:00.000000000 Z
11
+ date: 2016-03-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler