Sha256: 74f8dcdd8046d6bf112ee863a45f3a699fff6c750f803d95f4c500b29f116829
Contents?: true
Size: 1.46 KB
Versions: 19
Compression:
Stored size: 1.46 KB
Contents
module FlydataCore module SourcePosBase EMPTY = "-" INFINITY = 'infinity' PREDEFINED_SRC_LIST = [EMPTY, INFINITY] def self.included(base) base.class_eval do include Comparable attr_reader :src_pos_empty, :src_pos_infinity def self.empty_src_pos self.new(EMPTY) end def self.infinity_src_pos self.new(INFINITY) end end end def to_s if empty? EMPTY elsif infinity? INFINITY else nil end end # Return true if one of flags is set def set_predefined_flags(str) case str.to_s when EMPTY @src_pos_empty = true when INFINITY @src_pos_infinity = true else false end end def empty? @src_pos_empty == true end def infinity? @src_pos_infinity == true end # Override (Comparable) def <=>(other_pos) if other_pos.nil? raise ArgumentError.new("comparison with nil failed") end other_pos = self.class.new(other_pos) unless other_pos.kind_of?(self.class) if infinity? && other_pos.infinity? return 0 elsif infinity? return 1 elsif other_pos.infinity? return -1 end if empty? && other_pos.empty? return 0 elsif empty? || other_pos.empty? raise ArgumentError.new("comparison with empty source pos failed") end nil end end end
Version data entries
19 entries across 19 versions & 1 rubygems