lotus-utils 0.4.2 → 0.4.3

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: c30faaee9896466ea8757f707a3c0a33ada14f3a
4
- data.tar.gz: 8e959b68425befd384065a74e0367865ab21ede3
3
+ metadata.gz: 119e1e01ae231b8dd402f6cda19aa9354663e439
4
+ data.tar.gz: 5e28d0a9c8e1b06a66acc3ff881ac08908a5b0a3
5
5
  SHA512:
6
- metadata.gz: d4f36dfb7d0b2e204433cd5e535e8de699e42a9706f054da3bb86aa0d3e5b23f7af8c3f5814591c3ec18554deed697f8b7a20739b9ee113a6393a9bf40fa619e
7
- data.tar.gz: a4eb1264f70bbe20081fa2e2398e45c4a24ebfeac85ef9dfc0ce743ce764f34edabccd6ce046247f4bc5a33d720cb3e0bd15d4723f84772f9cb0df09245fa3e8
6
+ metadata.gz: ea4c280a6b7c8b693d69bf132b85de349e0c459a4ac259f33d58313244ca97300aae686743f4f15fd00314c41d07b792151f78a02a2e2c75b9d157d4d3f744a3
7
+ data.tar.gz: 95432308fb5689d4a61292cd24553df16a37e039ac79760debe4813d961dadff081e8ccb993946891e86c57fe77d2e7b85822cd3d2096111031390c1a5d7af6a
data/CHANGELOG.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # Lotus::Utils
2
2
  Ruby core extentions and class utilities for Lotus
3
3
 
4
+ ## v0.4.3 - 2015-05-22
5
+ ### Added
6
+ - [François Beausoleil] Improved `Lotus::Utils::Kernel` messages for `TypeError`.
7
+
4
8
  ## v0.4.2 - 2015-05-15
5
9
  ### Fixed
6
10
  - [Luca Guidi] Ensure `Lotus::Utils::Attributes#to_h` to return `::Hash`
@@ -140,7 +140,7 @@ module Lotus
140
140
  Set.new(::Kernel.Array(arg))
141
141
  end
142
142
  rescue NoMethodError
143
- raise TypeError.new("can't convert into Set")
143
+ raise TypeError.new("can't convert #{inspect_type_error(arg)}into Set")
144
144
  end
145
145
 
146
146
  # Coerces the argument to be a Hash.
@@ -205,7 +205,7 @@ module Lotus
205
205
  super(arg)
206
206
  end
207
207
  rescue NoMethodError
208
- raise TypeError.new "can't convert into Hash"
208
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into Hash"
209
209
  end
210
210
  else
211
211
  def self.Hash(arg)
@@ -217,7 +217,7 @@ module Lotus
217
217
  super(arg)
218
218
  end
219
219
  rescue ArgumentError, NoMethodError
220
- raise TypeError.new "can't convert into Hash"
220
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into Hash"
221
221
  end
222
222
  end
223
223
 
@@ -336,13 +336,13 @@ module Lotus
336
336
  when NilClass, ->(a) { a.respond_to?(:to_i) && a.to_s.match(NUMERIC_MATCHER) }
337
337
  arg.to_i
338
338
  else
339
- raise TypeError.new "can't convert into Integer"
339
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into Integer"
340
340
  end
341
341
  rescue NoMethodError
342
- raise TypeError.new "can't convert into Integer"
342
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into Integer"
343
343
  end
344
344
  rescue RangeError
345
- raise TypeError.new "can't convert into Integer"
345
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into Integer"
346
346
  end
347
347
 
348
348
  # Coerces the argument to be a BigDecimal.
@@ -426,10 +426,10 @@ module Lotus
426
426
  when ->(a) { a.to_s.match(NUMERIC_MATCHER) }
427
427
  BigDecimal.new(arg)
428
428
  else
429
- raise TypeError.new "can't convert into BigDecimal"
429
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into BigDecimal"
430
430
  end
431
431
  rescue NoMethodError
432
- raise TypeError.new "can't convert into BigDecimal"
432
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into BigDecimal"
433
433
  end
434
434
 
435
435
  # Coerces the argument to be a Float.
@@ -552,13 +552,13 @@ module Lotus
552
552
  when NilClass, ->(a) { a.respond_to?(:to_f) && a.to_s.match(NUMERIC_MATCHER) }
553
553
  arg.to_f
554
554
  else
555
- raise TypeError.new "can't convert into Float"
555
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into Float"
556
556
  end
557
557
  rescue NoMethodError
558
- raise TypeError.new "can't convert into Float"
558
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into Float"
559
559
  end
560
560
  rescue RangeError
561
- raise TypeError.new "can't convert into Float"
561
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into Float"
562
562
  end
563
563
 
564
564
  # Coerces the argument to be a String.
@@ -659,14 +659,14 @@ module Lotus
659
659
  super(arg)
660
660
  end
661
661
  rescue NoMethodError
662
- raise TypeError.new "can't convert into String"
662
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into String"
663
663
  end
664
664
  else
665
665
  def self.String(arg)
666
666
  arg = arg.to_str if arg.respond_to?(:to_str)
667
667
  super(arg)
668
668
  rescue NoMethodError
669
- raise TypeError.new "can't convert into String"
669
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into String"
670
670
  end
671
671
  end
672
672
 
@@ -731,7 +731,7 @@ module Lotus
731
731
  Date.parse(arg.to_s)
732
732
  end
733
733
  rescue ArgumentError, NoMethodError
734
- raise TypeError.new "can't convert into Date"
734
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into Date"
735
735
  end
736
736
 
737
737
  # Coerces the argument to be a DateTime.
@@ -799,7 +799,7 @@ module Lotus
799
799
  DateTime.parse(arg.to_s)
800
800
  end
801
801
  rescue ArgumentError, NoMethodError
802
- raise TypeError.new "can't convert into DateTime"
802
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into DateTime"
803
803
  end
804
804
 
805
805
  # Coerces the argument to be a Time.
@@ -864,7 +864,7 @@ module Lotus
864
864
  Time.parse(arg.to_s)
865
865
  end
866
866
  rescue ArgumentError, NoMethodError
867
- raise TypeError.new "can't convert into Time"
867
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into Time"
868
868
  end
869
869
 
870
870
  # Coerces the argument to be a Boolean.
@@ -917,7 +917,7 @@ module Lotus
917
917
  !!arg
918
918
  end
919
919
  rescue NoMethodError
920
- raise TypeError.new "can't convert into Boolean"
920
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into Boolean"
921
921
  end
922
922
 
923
923
  # Coerces the argument to be a Pathname.
@@ -975,7 +975,7 @@ module Lotus
975
975
  super
976
976
  end
977
977
  rescue NoMethodError
978
- raise TypeError.new "can't convert into Pathname"
978
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into Pathname"
979
979
  end
980
980
 
981
981
  # Coerces the argument to be a String.
@@ -1021,13 +1021,38 @@ module Lotus
1021
1021
  # Lotus::Utils::Kernel.Symbol(input) # => TypeError
1022
1022
  def self.Symbol(arg)
1023
1023
  case arg
1024
- when '' then raise TypeError.new "can't convert into Symbol"
1024
+ when '' then raise TypeError.new "can't convert #{inspect_type_error(arg)}into Symbol"
1025
1025
  when ->(a) { a.respond_to?(:to_sym) } then arg.to_sym
1026
1026
  else
1027
- raise TypeError.new "can't convert into Symbol"
1027
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into Symbol"
1028
1028
  end
1029
1029
  rescue NoMethodError
1030
- raise TypeError.new "can't convert into Symbol"
1030
+ raise TypeError.new "can't convert #{inspect_type_error(arg)}into Symbol"
1031
+ end
1032
+
1033
+ # Returns the most useful type error possible
1034
+ #
1035
+ # If the object does not respond_to?(:inspect), we return the class, else we
1036
+ # return nil. In all cases, this method is tightly bound to callers, as this
1037
+ # method appends the required space to make the error message look good.
1038
+ #
1039
+ # @since 0.4.3
1040
+ # @api private
1041
+ def self.inspect_type_error(arg)
1042
+ (arg.respond_to?(:inspect) ? arg.inspect : arg.to_s) << " "
1043
+ rescue NoMethodError => _
1044
+ # missing the #respond_to? method, fall back to returning the class' name
1045
+ begin
1046
+ arg.class.name << " instance "
1047
+ rescue NoMethodError
1048
+ # missing the #class method, can't fall back to anything better than nothing
1049
+ # Callers will have to guess from their code
1050
+ nil
1051
+ end
1052
+ end
1053
+
1054
+ class << self
1055
+ private :inspect_type_error
1031
1056
  end
1032
1057
  end
1033
1058
  end
@@ -3,6 +3,6 @@ module Lotus
3
3
  # Defines the version
4
4
  #
5
5
  # @since 0.1.0
6
- VERSION = '0.4.2'.freeze
6
+ VERSION = '0.4.3'.freeze
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lotus-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-05-15 00:00:00.000000000 Z
12
+ date: 2015-05-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler