Sha256: 30a7ff5c5e2c071ce7f4365fe5026196917590aaa1c900310972a96a1663c388

Contents?: true

Size: 1.43 KB

Versions: 15

Compression:

Stored size: 1.43 KB

Contents

module Torque
  module PostgreSQL
    class Segment < Struct.new(:point0, :point1)
      def x1=(value)
        self.point0 = new_point(value, y1)
      end

      def x1
        point0.x
      end

      def y1=(value)
        self.point0 = new_point(x1, value)
      end

      def y1
        point0.y
      end

      def x2=(value)
        self.point1 = new_point(value, y2)
      end

      def x2
        point1.x
      end

      def y2=(value)
        self.point1 = new_point(x2, value)
      end

      def y2
        point1.y
      end

      private

        def new_point(x, y)
          Torque::PostgreSQL.config.geometry.point_class.new(x, y)
        end
    end

    config.geometry.segment_class ||= ::ActiveRecord.const_set('Segment', Class.new(Segment))

    module Adapter
      module OID
        class Segment < Torque::PostgreSQL::GeometryBuilder

          PIECES = %i[x1 y1 x2 y2].freeze
          FORMATION = '((%s,%s),(%s,%s))'.freeze

          protected

            def point_class
              Torque::PostgreSQL.config.geometry.point_class
            end

            def build_klass(*args)
              return nil if args.empty?
              check_invalid_format!(args)

              x1, y1, x2, y2 = args.try(:first, pieces.size)&.map(&:to_f)
              config_class.new(
                point_class.new(x1, y1),
                point_class.new(x2, y2),
              )
            end

        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
torque-postgresql-1.1.8 lib/torque/postgresql/adapter/oid/segment.rb
torque-postgresql-1.1.7 lib/torque/postgresql/adapter/oid/segment.rb
torque-postgresql-2.0.3 lib/torque/postgresql/adapter/oid/segment.rb
torque-postgresql-2.0.2 lib/torque/postgresql/adapter/oid/segment.rb
torque-postgresql-1.1.6 lib/torque/postgresql/adapter/oid/segment.rb
torque-postgresql-1.1.5 lib/torque/postgresql/adapter/oid/segment.rb
torque-postgresql-2.0.1 lib/torque/postgresql/adapter/oid/segment.rb
torque-postgresql-2.0.0 lib/torque/postgresql/adapter/oid/segment.rb
torque-postgresql-1.1.4 lib/torque/postgresql/adapter/oid/segment.rb
torque-postgresql-1.1.3 lib/torque/postgresql/adapter/oid/segment.rb
torque-postgresql-1.1.2 lib/torque/postgresql/adapter/oid/segment.rb
torque-postgresql-1.1.1 lib/torque/postgresql/adapter/oid/segment.rb
torque-postgresql-1.1.0 lib/torque/postgresql/adapter/oid/segment.rb
torque-postgresql-1.0.1 lib/torque/postgresql/adapter/oid/segment.rb
torque-postgresql-1.0.0 lib/torque/postgresql/adapter/oid/segment.rb