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

Version Path
flydata-0.8.10.2 flydata-core/lib/flydata-core/source_pos_base.rb
flydata-0.8.10.1 flydata-core/lib/flydata-core/source_pos_base.rb
flydata-0.8.9.11 flydata-core/lib/flydata-core/source_pos_base.rb
flydata-0.8.10 flydata-core/lib/flydata-core/source_pos_base.rb
flydata-0.8.9 flydata-core/lib/flydata-core/source_pos_base.rb
flydata-0.8.8 flydata-core/lib/flydata-core/source_pos_base.rb
flydata-0.8.7 flydata-core/lib/flydata-core/source_pos_base.rb
flydata-0.8.6 flydata-core/lib/flydata-core/source_pos_base.rb
flydata-0.8.5 flydata-core/lib/flydata-core/source_pos_base.rb
flydata-0.8.4 flydata-core/lib/flydata-core/source_pos_base.rb
flydata-0.8.3 flydata-core/lib/flydata-core/source_pos_base.rb
flydata-0.8.2 flydata-core/lib/flydata-core/source_pos_base.rb
flydata-0.8.1 flydata-core/lib/flydata-core/source_pos_base.rb
flydata-0.8.0 flydata-core/lib/flydata-core/source_pos_base.rb
flydata-0.7.19 flydata-core/lib/flydata-core/source_pos_base.rb
flydata-0.7.18 flydata-core/lib/flydata-core/source_pos_base.rb
flydata-0.7.17 flydata-core/lib/flydata-core/source_pos_base.rb
flydata-0.7.16 flydata-core/lib/flydata-core/source_pos_base.rb
flydata-0.7.15 flydata-core/lib/flydata-core/source_pos_base.rb