isy 0.1.0 → 0.1.1

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
  SHA1:
3
- metadata.gz: ee53a669d2ae66bc8ed75edf47d28ef32d3e5a5f
4
- data.tar.gz: 35d47d261389e1c855ef34841226d0edeaed7ad4
3
+ metadata.gz: 1924fef98cb5aaaf39ed180fe2fd14db37bc072a
4
+ data.tar.gz: 79661c9517afc68bf60dcb6db5f916249d633a6b
5
5
  SHA512:
6
- metadata.gz: 6f9d5cf2806b1e8bb027a69ec38ccd9ee4bfa76b9adbe5dd6a4bb2c52c66ea10a2c1892038c586220c23898b3500e08392be7581bc494d0373b1c25781d9a488
7
- data.tar.gz: 02cf60fd55da29da79bbfc8889379ad77462bafa250a4a3b235a8ec664d1521dfa00562ec0cdc123dfd4154c26a117c486d7a7bb89f37770baef9e5e307a4228
6
+ metadata.gz: 2192aa293532cfa148aaed6a2b54604a0505389ff77a7e2cafca582dbcc2bb0aeee3a8af0425786980d00930880ce136f1f5b7717b90f52e287b8a50c03cb3a6
7
+ data.tar.gz: 89dba2c5ae9aa5bc706a30b4f2ed2057263118a6de96aa8a9711c258d03feaadb48351144ffb17c4ad9fa8f60e5badbdfc3a148276799d64d744109a8636bb22
data/README.md CHANGED
@@ -19,6 +19,24 @@ def fullname segments=[]
19
19
  end
20
20
  ```
21
21
 
22
+ `Isy` takes a declarative approach to solving the problem. Instead of
23
+ dictating the contraints (and resulting response) to each argument type,
24
+ you can levelage Isy's simple interface.
25
+
26
+ ## Performance
27
+
28
+ It's not great against a more "native" implementation; but, where you lose a little
29
+ in performance, you (may) gain in an ability to quickly reason about the
30
+ code.
31
+
32
+ A native implementation is incredibly light (see above): no additional dependencies
33
+ and logistical overhead. Using `Isy` you're introducing an additional dependency and
34
+ better support for evaluation routines (by providing a block).
35
+
36
+ To run a comparison benchmark:
37
+
38
+ `$ ruby spec/benchmark.rb`
39
+
22
40
  ## Installation
23
41
 
24
42
  Add this line to your application's Gemfile:
data/isy.gemspec CHANGED
@@ -21,4 +21,6 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.10"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
23
  spec.add_development_dependency "rspec", "~> 3.4.0"
24
+ spec.add_development_dependency "pry-byebug"
25
+ spec.add_development_dependency "benchmark-ips"
24
26
  end
@@ -1,7 +1,7 @@
1
1
  module Isy
2
2
  class ArgumentTypeMismatch < ArgumentError
3
- def initialize subject
4
- super "#{subject.inspect} isn't a valid argument"
3
+ def initialize subject:, caller_method:
4
+ super "#{subject.inspect} isn't a valid argument for ##{caller_method}"
5
5
  end
6
6
  end
7
7
  end
data/lib/isy/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Isy
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/lib/isy.rb CHANGED
@@ -18,7 +18,10 @@ module Isy
18
18
  evaluation ||= lambda { |s| s.is_a? args[0] }
19
19
 
20
20
  unless evaluation.call(subject)
21
- raise Isy::ArgumentTypeMismatch, subject
21
+ raise Isy::ArgumentTypeMismatch.new(
22
+ subject: subject,
23
+ caller_method: caller_locations(1,1)[0].label
24
+ )
22
25
  end
23
26
  end
24
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Cuppy
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 3.4.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry-byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: benchmark-ips
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  description:
56
84
  email:
57
85
  - adam@codingzeal.com
@@ -97,4 +125,3 @@ signing_key:
97
125
  specification_version: 4
98
126
  summary: Type assertion library for method arguments
99
127
  test_files: []
100
- has_rdoc: