Merge pull request #6585 from mitchellh/sethvargo/presence
Add presence helpers
This commit is contained in:
commit
0698743724
|
@ -0,0 +1,41 @@
|
||||||
|
module Vagrant
|
||||||
|
module Util
|
||||||
|
module Presence
|
||||||
|
extend self
|
||||||
|
|
||||||
|
# Determines if the given object is "present". A String is considered
|
||||||
|
# present if the stripped contents are not empty. An Array/Hash is
|
||||||
|
# considered present if they have a length of more than 1. "true" is
|
||||||
|
# always present and `false` and `nil` are always not present. Any other
|
||||||
|
# object is considered to be present.
|
||||||
|
#
|
||||||
|
# @return [true, false]
|
||||||
|
def present?(obj)
|
||||||
|
case obj
|
||||||
|
when String
|
||||||
|
!obj.strip.empty?
|
||||||
|
when Array, Hash
|
||||||
|
!obj.empty?
|
||||||
|
when TrueClass, FalseClass
|
||||||
|
obj
|
||||||
|
when NilClass
|
||||||
|
false
|
||||||
|
when Object
|
||||||
|
true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Returns the presence of the object. If the object is {present?}, it is
|
||||||
|
# returned. Otherwise `false` is returned.
|
||||||
|
#
|
||||||
|
# @return [Object, false]
|
||||||
|
def presence(obj)
|
||||||
|
if present?(obj)
|
||||||
|
obj
|
||||||
|
else
|
||||||
|
false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,46 @@
|
||||||
|
require File.expand_path("../../../base", __FILE__)
|
||||||
|
|
||||||
|
require "vagrant/util/presence"
|
||||||
|
|
||||||
|
describe Vagrant::Util::Presence do
|
||||||
|
subject { described_class }
|
||||||
|
|
||||||
|
describe "#presence" do
|
||||||
|
it "returns false for nil" do
|
||||||
|
expect(subject.presence(nil)).to be(false)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns false for false" do
|
||||||
|
expect(subject.presence(false)).to be(false)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns false for an empty string" do
|
||||||
|
expect(subject.presence("")).to be(false)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns false for a string with null bytes" do
|
||||||
|
expect(subject.presence("\u0000")).to be(false)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns false for an empty array" do
|
||||||
|
expect(subject.presence([])).to be(false)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns false for an empty hash" do
|
||||||
|
expect(subject.presence({})).to be(false)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns true for true" do
|
||||||
|
expect(subject.presence(true)).to be(true)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns the object for an object" do
|
||||||
|
obj = Object.new
|
||||||
|
expect(subject.presence(obj)).to be(obj)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns the class for a class" do
|
||||||
|
expect(subject.presence(String)).to be(String)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue