type-enforcer 0.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 +7 -0
- data/lib/type-enforcer/base.rb +46 -0
- data/lib/type-enforcer/matchers.rb +22 -0
- data/lib/type-enforcer.rb +2 -0
- metadata +46 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 69b0b10137e641702abe4e4400e00be63e8b0e10
|
4
|
+
data.tar.gz: b0f90b58d9785ca514e704811f13bb89b46a2bf9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2bd4bcff6ecf474a14881c9c231430eb49c3089b1f12b1cd2586edf45c2340c7fe17bf4cc5e69d9132a7edbc4a1cde291f1818d9ee3d2c315b69be9583c4a1d4
|
7
|
+
data.tar.gz: d9d13c0c6b9154c84b2a4f755daa61f26877531db49cdbfc2575ca0bd6c7aa2937c6467a5e4ed60a9ca2861ebb11a97d5aae7e1a68f466885500b6daa8eb6e79
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module TypeEnforcer
|
2
|
+
class Error < StandardError; end
|
3
|
+
class TypeError < StandardError; end
|
4
|
+
|
5
|
+
refine Object do
|
6
|
+
def enforce(type)
|
7
|
+
case type
|
8
|
+
when Symbol
|
9
|
+
TypeEnforcer.try(type, self) || try(type) ? self : nil
|
10
|
+
else
|
11
|
+
self.acts_as?(type) ? self.try(:convert_to, type) || self : nil
|
12
|
+
end
|
13
|
+
end
|
14
|
+
alias_method :e, :enforce
|
15
|
+
|
16
|
+
def enforce!(type)
|
17
|
+
enforced = enforce(type)
|
18
|
+
|
19
|
+
raise TypeError if enforced.nil?
|
20
|
+
enforced
|
21
|
+
end
|
22
|
+
alias_method :e!, :enforce!
|
23
|
+
|
24
|
+
def acts_as?(type)
|
25
|
+
type === self
|
26
|
+
end
|
27
|
+
|
28
|
+
def present?
|
29
|
+
!nil?
|
30
|
+
end
|
31
|
+
|
32
|
+
def present!
|
33
|
+
raise TypeError if nil?
|
34
|
+
self
|
35
|
+
end
|
36
|
+
alias_method :p!, :present!
|
37
|
+
|
38
|
+
def try(method, *args)
|
39
|
+
send(method, *args) if respond_to?(method)
|
40
|
+
end
|
41
|
+
|
42
|
+
def blank?
|
43
|
+
nil? || try(:empty?)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module TypeEnforcer
|
2
|
+
refine String do
|
3
|
+
def numeric?
|
4
|
+
(/^\d+(\.\d+)?$/ =~ self).present?
|
5
|
+
end
|
6
|
+
|
7
|
+
def fixnum?
|
8
|
+
(/^\d+$/ =~ self).present?
|
9
|
+
end
|
10
|
+
|
11
|
+
def blank?
|
12
|
+
(/^\s*$/ =~ self).present?
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
refine Numeric do
|
17
|
+
# http://stackoverflow.com/a/1093707/1311454
|
18
|
+
def whole?
|
19
|
+
self % 1 == 0
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: type-enforcer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kyle Lacy
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-07-06 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: A way to ensure things are the types you want them to be
|
14
|
+
email: kylelacy@me.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/type-enforcer.rb
|
20
|
+
- lib/type-enforcer/base.rb
|
21
|
+
- lib/type-enforcer/matchers.rb
|
22
|
+
homepage: https://github.com/kylewlacy/type-enforcer
|
23
|
+
licenses: []
|
24
|
+
metadata: {}
|
25
|
+
post_install_message:
|
26
|
+
rdoc_options: []
|
27
|
+
require_paths:
|
28
|
+
- lib
|
29
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.0.0
|
34
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
requirements: []
|
40
|
+
rubyforge_project:
|
41
|
+
rubygems_version: 2.0.3
|
42
|
+
signing_key:
|
43
|
+
specification_version: 4
|
44
|
+
summary: nil-b-gone
|
45
|
+
test_files: []
|
46
|
+
has_rdoc:
|