Blob of lib/strokedb/core_ext/infinity.rb (raw blob data)

1 # These are for use in Range arguments for View#find.
2 # We don't provide correct spaceship operator <=>
3 # to preserve performance.
4 #
5 class Object
6 def infinite?
7 false
8 end
9 end
10
11 class Numeric
12 def infinite?
13 self.abs == Infinity
14 end
15 end
16
17 InfiniteString = Class.new(String) do
18 def infinite?
19 true
20 end
21 end.new.freeze
22
23 InfiniteTime = Class.new(Time) do
24 def infinite?
25 true
26 end
27 end.new.freeze
28
29 # Syntactic sugar: sweet aliases for daily use.
30 # For use like (SmallestString.."a") in View#find()
31 #
32 LargestString = SmallestString = StringInfinity = InfiniteString
33 LargestTime = SmallestTime = TimeInfinity = InfiniteTime